创建
var arr1 = ['A','B','C'];
var arr2 = [1,,2];//1,undefined,2
var arr3 = new Array();
var arr4 = new Array(100);//undefined *100
var arr5 = new Array(true,1,null)//等价于[trje,1,null]
长度
0到4,294,967,295(2^23-1)
元素增删
可以动态增加,不用指定大小
arr.push(3); //在最后加
arr[arr.length]=4;//在最后加
arr.unshift(0); //在头部加
arr=[1,2,3];
delete arr[0]; //[undefined,2,3]
arr.length; //3
0 in arr; // false
arr.length -=1;//删除最后一个
arr.pop(); //删除最后一个
arr.shift(); //删除第一个
数组遍历
for(i=0;i<arr.length;i++){
console.log(arr[i]);
}
for(i in arr){
if(arr.hasOwnProperty(i)){
console.log(arr[i]);
}
}
var arr=[1,2];
arr.forEach(function (x,index) {
console.log(index+"==>"+x);
})
//0==>1
//1==>2
二维数组
for(var i=0;i<arr.length;i++){
row = arr[i];
for(var j=0;j<row.length;j++){
console.log(row[j]);
}
}
稀疏数组
var arr1 = [undefined]
0 in arr1; //true
arr1.length=100;
arr1[99]=123;
99 in arr1; //true
98 in arr1; //false
var arr2=new Array(1);
0 in arr2; //false
var arr3[,,];
0 in arr3; //false
数组方法
将数组转化为字符串
arr.join(); //逗号隔开
arr.join("_");逆序
arr.reverse(); //原数组被修改-
排序
arr.sort();
//数字被转换成字符串,13会排在3前面arr.sort(function(a,b){
return a-b;
}) -
合并
arr.concat();//不修改原数组
var arr=[1,2,3]arr.concat([10,11],12); //[1,2,3,10,11,12]
arr.concat([10,[11,12]]); //[1,2,3,10,[11,12]] 数组中的数组仍然作为一个元素
切片
var arr=[1,2,3,4,5];
arr.slice(1,3);//[2,3]
arr.slice(1);[2,3,4,5]
arr.slice(1,-1);//[2,3,4]
arr.slice(-4,-3); //[2]-
数组拼接
var arr=[1,2,3,4,5];
arr.splice(2);//return [3,4,5];
arr;//[1,2]var arr=[1,2,3,4,5]
arr.splice(2,2);//return [3,4]
arr;//[1,4,5]var arr = [1,2,3,4,5]
arr.splice(1,1,'a','b');//return [2]
arr;//[1,'a','b',3,4,5] 数组映射
var arr = [1,2,3];
arr.map(function(x){
return x+10;
})//[1,2,3]
arr;//[1,2,3]过滤
var arr=[1,2,3,4];
arr.filter(function(x){
return x>=3;
}); //[3,4]
arr; //[1,2,3,4]-
数组判断
arr=[1,2,3,4];
arr.every(function(x){
return x<10;
});//truearr.some(function(x){
return x===3;
});//true -
reduce & reduceRight
var arr=[1,2,3];
var sum=arr.reduce(function(x,y){
return x+y;
},0) //0作为第一个x,sum结果为6
arr;//[1,2,3]var = [3,9,6]
var max=arr.reduce(function(x,y){
console.log(x+"|"+y);
return x>y?x:y;
});//9
//3|9
//9:6max=arr.reduceRight(function(x,y){
console.log(x+"|"+y);
return x>y?x:y;
});//9
//6|9
//9|3 indexOf & lastIndexOf
arr.indexOf()-
判断是否是数组
- Array.isArray([]);
- [] instanceof Array;
- ({}).toString.apply([])==='[object Array]';
- [].constructor === Array;