Array 类型也是 ECMASCRIPT 中最常见的数据类型, 而且数据的每一项可以保存任何类型的数值, 而且数组的大小是可以动态调整的, 可以随着数据的添加自动增长以容纳新的数据. 下面, 总结数据的一些常用方法:
1. 创建数组
1.1. 使用 Array 构造函数
- var arr=new Array(4); // 创建一个包含 3 项的空数组
- var arr2=new Array('red','blue','yellow'); //['red','blue','yellow']
1.2. 数组字面量创建
- var arr3=[]; //[]
- var arr4=['red','yellow']; //['red','yellow']
- var arr5=[1,2,]; //[1,2,]
2. 读取和设置数组的值
index 数组的索引, 即下标, 当 index<arr.length 时, 可以获取数组中的值, 否则取到的值为 undefined.
通过设置数组的 length, 可以对数组的末尾移除或添加
- var arr4=['red','yellow'];
- console.log(
- arr4[0],
- arr4[2],
- );
- //red
- //undefined
- var arr4=['red','yellow'];
- arr4.length=1;
- console.log(arr4);
- arr4.length=3;
- console.log(arr4);
- //["red"] 长度变为 1
- //["red", empty * 2] 长度变为 3, 后两项为空
- var arr=[1,2,3];
- arr[10]=10;
- console.log(arr);
- //[1, 2, 3, empty * 7, 10] length 为 10 中间的值为 undefined
通过 arr[arr.length-1] 可以获取到数组的最后一项, 通过 arr[length]=item 可以设置最后一项的值并动态增加了数组的长度
3. 数组的方法
3.1. 连接两个数组或多个数组 - concat
不改变原始数组, 需要用新的变量保存返回的新数组
- var arr1=[1,2];
- var arr2=[2,3];
- arr1.concat(arr2);
- console.log(arr1,arr2);
- var arr3=arr1.concat(arr2);
- console.log(arr3);
- // [1, 2] (2) [2, 3]
- // [1, 2, 2, 3]
3.2. 截取数组一部分 - slice
arr.slice(startIndex,endIndex); 截取的项包括数组开始的索引的项, 不包括数组结束的索引的项
也不改变原始数组, 需要用新的变量保存返回的新数组
- var arr1=[1,2];
- var arr2=[2,3];
- arr1.concat(arr2);
- console.log(arr1,arr2);
- var arr3=arr1.concat(arr2);
- console.log(arr3);
- // [1, 2] (2) [2, 3]
- // [1, 2, 2, 3]
- var arr=[1,2,3];
- arr.slice(0,1);
- console.log(arr);
- var sub=arr.slice(0,1);
- console.log(sub);
- // [1, 2, 3]
- // [1]
- var arr=[1,2,3,4,5];
- arr.reverse();
- // [5, 4, 3, 2, 1]
- var arr=[1,2,11,5,50];
- arr.sort();
- // [1, 11, 2, 5, 50] 按照 uicode 编码排序不是我们想要的结果
- arr.sort(function(a,b){
- if(a<b){
- return -1;
- }else if(a>b){
- return 1;
- }else{
- return 0;
- }
- })
- // [1, 2, 5, 11, 50]
- array.splice(index,howmany,item1,.....,itemX);
- // 删除开始索引后的第几个元素
- var arr=[1,2,3,4,5];
- arr.splice(1,1); //[1, 3, 4, 5]
- // 删除开始索引后的第几个元素然后插入新的值
- var arr1=[1,2,3,4,5];
- arr1.splice(1,2,11,22); // [1, 11, 22, 4, 5]
- var arr=[1,2,3];
- arr.push('a'); //4 返回数组的长度
- arr // [1, 2, 3, "a"]
- var arr=[1,2,3];
- arr.pop(); //3 返回数组最后一项的弹出值
- arr
- (3) [1, 2]
- var arr=[1,2,3];
- arr.push(4) //4
- arr.shift(); //1
- arr; //[2,3,4]
- arr.unshift("a"); //4
- arr; //["a",1,2,3]
- var arr=[1,2,3,1,4];
- arr.indexOf(1); //0
- arr.lastIndexOf(1); //3
- var arr=[1,2,3,[4,5],[7,8]];
- var arr2=arr.flat(); // 等价于 arr.flat(1)
- console.log(arr2);
- // [1, 2, 3, 4, 5, 7, 8]
- var numbers=[1,2,3,4,5];
- var result=numbers.every(function(item,index,arr){
- return item>2;
- })
- result //false
- var numbers=[1,2,3,4,5];
- var result=numbers.some(function(item,index,arr){
- return item>2;
- })
- result //false
- var numbers=[1,2,3,4,5];
- var result=numbers.filter(function(item,index,arr){
- return item>2;
- });
- result //[3, 4, 5]
- var numbers=[1,2,3,4,5];
- var result=numbers.map(function(item,index,arr){
- return item*item;
- });
- result // [1, 4, 9, 16, 25]
来源: http://www.qdfuns.com/article/51117/6aab03d2a4ed539319c138a36e20a161.html