1.創(chuàng)建方法
1.直接創(chuàng)建
var arr=new Array(); //()可以傳遞參數(shù)搀突,表示數(shù)組長度续室,也可以不傳
2.數(shù)組字面量
var arr=[2,4,,5,6] ;
2.檢測方法
- instanceof
eg:
arr=[1,3,4];
arr instanceof Array叽粹;//true
>2. isArray()
eg:
Array.isArray(arr);//true;
3.頭尾刪除添加方法
因?yàn)閖s中數(shù)組長度是可變的冀值,所以不用預(yù)先設(shè)置其長度或申請(qǐng)空間溯乒;
- 頭部增加元素:arr.unshift(value1,value2,value3,...);
//數(shù)組前端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長度; - 尾部添加元素:arr.push(value1,value2,value3,...);
//數(shù)組尾端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長度匪煌;
3.頭部刪除元素:
arr.shift();//移除數(shù)組的第一項(xiàng)并返回該項(xiàng); - 尾部添加元素:
arr.pop();/移除數(shù)組的最后一項(xiàng)并返回該項(xiàng);
4.排序方法
因?yàn)閿?shù)組自身提供的arr.sort()函數(shù)字符順序進(jìn)行排序的责蝠,所以當(dāng)數(shù)字大于10的情況下,就很可能發(fā)生錯(cuò)誤萎庭,所以我們需要自定義排序方法霜医;
error example:
var values=[10,1,5,10,15];
values.sort();
console.log(values);//0,1,10,15,5
重寫方法:
function compare(a,b){
if(a>b){
return 1;
}
else if(a<b){
return -1;
}
else{
return 0;
}
}
5.數(shù)組操作方法
1.splice()方法刪除:
arr.splice(起始位置,分割長度),下標(biāo)從0開始驳规;
eg:
arr=[2,5,1,89,23,14,67]
arr.splice(2,2)肴敛;
arr為[2, 5, 23, 14, 67]
2..splice()方法插入:
1.只插入不刪除(第一個(gè)參數(shù)表示開始的下標(biāo)位置,第二個(gè)參數(shù)為0即可表示不刪除吗购,后面元素個(gè)數(shù)可選医男,表示要插入的元素)
arr=[2, 5, 1, 89, 23, 14, 67]
arr.splice(3,0,100);
arr為[2, 5, 1, 100, 89, 23, 14, 67]
arr.splice(3,0,0,0)
arr為[2, 5, 1, 0, 0, 100, 89, 23, 14, 67]
2.刪除又插入(即替換)(第一個(gè)參數(shù)表示開始的下標(biāo)位置,第二個(gè)參數(shù)表示刪除的元素個(gè)數(shù)捻勉,后面元素個(gè)數(shù)可選镀梭,表示要插入的元素)
arr=[2, 5, 1, 89, 23, 14, 67]
a.splice(2,2,6)
arr為[2, 5, 6, 23, 14, 67]
3.slice()方法截取:(返回一個(gè)新數(shù)組踱启,不影響當(dāng)前數(shù)組)
1.一個(gè)參數(shù):表示當(dāng)前位置到數(shù)組末尾的所有項(xiàng)
arr=[2,4,6,7,8,1,4];
var result=arr.slice(3);
result為:[7, 8, 1, 4];
2.兩個(gè)參數(shù):起始位置和結(jié)束位置报账,不包括結(jié)束位置的項(xiàng)
arr=[2,4,6,7,8,1,4];
var result=arr.slice(3,6);
result為:[7, 8, 1];
PS:數(shù)組長度為負(fù)數(shù)時(shí)埠偿,表示數(shù)組長度+該數(shù)透罢;
結(jié)束位置小于開始位置時(shí),返回空數(shù)理胚想;
4.indexOf()和lastIndexOf()方法:
參數(shù):第一個(gè)參數(shù)表示要查找的項(xiàng)琐凭,第二個(gè)參數(shù)表示開始查找位置(可選);
indexOf():從頭開始向后查找浊服;
lastIndexOf():從數(shù)組的末尾往前查找统屈;
arr=[2,4,6,7,8,1,4];
arr.indexOf(4); result:1
arr.lastIndexOf(4); result:6
arr.indexOf(4,3); result:6
arr.lastIndexOf(4,3) result:1
5.迭代方法
1.every():對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù)胚吁,函數(shù)每一項(xiàng)都返回true,則返回true愁憔;
arr=[3,5,7,1,9,5,3];
let flag=arr.every(function(item){
return item>0;
});
alert(flag);//true;
arr=[3,5,7,1,9,5,3];
let flag=arr.every(function(item){
return item>5;
});
alert(flag);//false;
2.some():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù)腕扶,如果數(shù)組的某一項(xiàng)返回true,則返回true吨掌;
arr=[3,5,7,1,9,5,3];
let flag=arr.some(function(item){
return item===9;
});
alert(flag);//true;
arr=[3,5,7,1,9,5,3];
let flag=arr.some(function(item){
return item>10;
});
alert(flag);//false;
3.map():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù)半抱,返回每次調(diào)用函數(shù)的結(jié)果組成的數(shù)組;
arr=[3,5,7,1,9,5,3];
let result=arr.map(function(item){
return item*5;
});
alert(result);//[15, 25, 35, 5, 45, 25, 15];
4.filter():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù)膜宋,返回每次調(diào)用函數(shù)結(jié)果為true的項(xiàng)組成的數(shù)組窿侈;
arr=[3,5,7,1,9,5,3];
let result=arr.filter(function(item){
return item>5;
});
alert(result);//[7, 9];
5.reduce():迭代數(shù)組的所有項(xiàng),返回一個(gè)最終值
回調(diào)函數(shù)接收四個(gè)參數(shù):前一個(gè)值秋茫,當(dāng)前值史简,項(xiàng)的索引和數(shù)組對(duì)象;第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上肛著;
arr=[3,5,7,1,9,5,3];
let result=arr.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(result);//33;
PS:reduceRight():和reduce一樣圆兵,主要區(qū)別在于reduceRight()從數(shù)組的最后一項(xiàng)開始遍歷數(shù)組,直到數(shù)組的第一項(xiàng)枢贿;
希望我的文章可以幫助到你殉农,謝謝~~