js中数组的使用
使用js时候,很多情况下要使用数组。就写写数组中一些常用的方法。
js中定义一个数组,一般有以下2种方法。
1. var arr = new Array(3); // 声明数组有3个元素
arr[0] = 1; arr[1] = 2; arr[2] = 3;
再比如这样 var arr = new Array("test"); // 数组中有个元素test
2. var arr = [1,2,3,4]; // 这种方式更受推荐
数组中有个重要属性length,就是数组元素个数,数组的长度。
有个有趣的用法,比如声明数组中的第一种方法时,我定义了有3个数组元素的arr,这时我想再添加一个元素,这时可以使用length
比如arr[arr.length] = 4;// 这就是在数组后,再追加一个元素
有个值得注意的是,length这个属性,可能不是表面上你添加了几个元素就是几个。
比如:
var arr = [1,2,3];
arr[9] = 11;
这时可能你只给了4个元素,分别是1,2,3,11。但是length并不是4,而是10。但是你访问arr[3..]都是undefined,即arr[5] == undefined。
检测一个变量是不是数组:
一般使用
if (arr instanceof Array){
//
}
这个存在局限性,不过大多数情况下满足。比较新的市面浏览器现在支持这种方法:
if (Array.isArray(arr)){
//
}
常用的方法
连接数组concat()
var arr1 = [1, 2, 3];
var arr2 = [3, 4, 5];
var arr3 = arr1.concat(arr2);// [1,2,3,3,4,5]
有个比较巧妙的克隆数组的方法:在concat()不填参数。比如:
var arr4 = arr1.concat();// [1, 2, 3]
转化成字符串:
var arrToStr = arr.toString();// 这个是把各个元素以逗号分隔
var arrToStr = arr.join(',');// join中传入逗号参数时,和上边的toString()效果一样。当然join可以传入其他分隔符
数组模拟了数据结构中栈和队列的方法。稍微注意下每个方法的返回值
比如模仿栈的方法,有push,pop。后进push先出pop
队列的方法,有shift,unshift。从数组头部进入unshift,头部出去shift
数组位置的查找方法,也是很常用的一个。现在流行的浏览器开始支持。也很容易理解。注意第二个参数的含义,表示从哪个位置开始查找,可以为负值。
如果查不到,就返回-1
var arr = [1,2,3,4,5,6,1,7];
比如我要查找1的位置。
arr.indexOf(1, 0);// 0
arr.indexOf(1, 1);// 6
arr.indexOf(1, -2);// 6
arr.indexOf(1, -999);// 0 超过长度以后,负值就从0开始了,所以查到的还是第一个位置的1
lastIndexOf()方法一样道理。
现在的浏览器也支持一些迭代方法。比如map,filter,forEach等等。就不举例子了。
另一个比较常用的方法slice。接收两个参数,start,end。取出数组中的一部分连续元素。这个方法会再生成一个子数组。
再有一个数组很强大的方法隆重介绍哈哈。splice(); 支持数组的增删改。主要用途还是往数组中间插入元素。
值得注意的是,这个方法区别于slice方法,它会改变原数组。
var arr = [1,2,3,4,5];
删除:传入2个参数,要删除第一项的位置(这里所说的位置都是指下标),和删除的项目数。比如
arr.splice(2, 99);// [1,2]
增加作用实际也算是修改了哈哈。如下:
修改:传入3个参数,起始位置,删除的项目数(如果是增加作用,此处就写0),增加的项目(增加多个就写多个);这个就是splice()的主要作用---中间插入。
arr.splice(2,1,7,8,9);// [1,2,7,8,9,4,5] 就是把元素3换成了7,8,9
好了,数组常用的基本就这样了。
js中数组的使用的更多相关文章
- js中数组去重的几种方法
js中数组去重的几种方法 1.遍历数组,一一比较,比较到相同的就删除后面的 function unique(arr){ ...
- JavaScript -- 时光流逝(二):js中数组的方法
JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...
- php和js中数组的总结
php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...
- JS中数组的介绍
一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...
- js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join
- js中数组如何使用
js中数组如何使用 一.总结 一句话总结:new Array()和[]两种方法都可以创建数组. 二.js中创建数组,并往数组里添加元素 数组的创建 var arrayObj = new Array() ...
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- js中数组去重方法及性能对比
js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...
- js中数组扁平化处理
- js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...
随机推荐
- 设计模式(23)--Visitor--访问者模式--行为型
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.模式定义: 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦 ...
- AngularJS学习之 登录表单 清爽验证(边学边更新)
注册过程的确好多需要验证的,但是注册成功之后的登录就简单多了, 只要用户 输入 用户名和密码, ajax向后台提交登录请求, 根据返回的结果确定用户名或者密码是否正确即可登录. 所以这个登录表单的验证 ...
- ArcGIS JavaScript API 4.x中热度图渲染的使用注意事项
要使用ArcGIS JavaScript API 4.x的热度图渲染器来渲染要素图层,需要注意几点前提条件: 1.需要使用ArcGIS Server 10.6.1或更高版本发布GIS服务. 2.只支持 ...
- Finereport和Finebi的区别
1.问题描述 大家现在可能都知道,目前帆软旗下特色产品主要是FineReport和FineBI,但是部分用户可能会有个疑问:FineReport和FineBI到底有什么区别? 2.产品介绍FineRe ...
- Linux awk命令常见使用方法介绍
Linux awk命令常见使用方法介绍 By:授客 QQ:1033553122 awk运行方式有三种,其中常用的为命令行方式 awk [-F field_separator] '{patter ...
- CSS 小结笔记之伸缩布局 (flex)
CSS flex 是一种伸缩布局,之前块级元素布局在同一行,可以通过display或position或float来实现,而本篇介绍一个新的方法——flex(弹性布局). flex 为和模型布局提供了极 ...
- UI第二组与数据库对接时遇到的问题记录
此为组内某一位做UI的同学的随笔. 之前的app由于没有加入数据库,所以每次重新启动里面的东西都会回到初始状态,即不能保存内容.我们的数据库小组已经很棒地基本完成了数据库的工作,于是我就准备加入数据库 ...
- Postsharp基本用法——方法、属性拦截与异常处理
以下Demo代码基于 .NET Core 演示了Postsharp的基本使用方法,稍作修改(反射部分有些许差异)也适用于.NET Framework. 更多高级使用方法详见官方文档.http://sa ...
- C#安全加密类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...
- 转:检查c#代码内存泄露工具-CLR Profiler工具使用
大家都知道.net有一套自己的内存(垃圾)回收机制,除非有一些数据(方法)长期占有内存不随着垃圾回收功能而释放内存,这样就造成了我们经常说的内存泄露.内存持续增长得不到释放等问题导致APS.NET网站 ...