1.創(chuàng)建方法
1.直接創(chuàng)建
var arr=new Array(); //()可以傳遞參數(shù),表示數(shù)組長(zhǎng)度,也可以不傳
2.數(shù)組字面量
var arr=[2,4,,5,6] ;
2.檢測(cè)方法
- instanceof
eg:
arr=[1,3,4];
arr instanceof Array;//true
>2. isArray()
eg:
Array.isArray(arr);//true;
3.頭尾刪除添加方法
因?yàn)閖s中數(shù)組長(zhǎng)度是可變的,所以不用預(yù)先設(shè)置其長(zhǎng)度或申請(qǐng)空間;
- 頭部增加元素:arr.unshift(value1,value2,value3,...);
//數(shù)組前端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長(zhǎng)度; - 尾部添加元素:arr.push(value1,value2,value3,...);
//數(shù)組尾端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長(zhǎng)度;
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
重寫(xiě)方法:
function compare(a,b){
if(a>b){
return 1;
}
else if(a<b){
return -1;
}
else{
return 0;
}
}
5.數(shù)組操作方法
1.splice()方法刪除:
arr.splice(起始位置,分割長(zhǎng)度),下標(biāo)從0開(kāi)始;
eg:
arr=[2,5,1,89,23,14,67]
arr.splice(2,2);
arr為[2, 5, 23, 14, 67]
2..splice()方法插入:
1.只插入不刪除(第一個(gè)參數(shù)表示開(kāi)始的下標(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ù)表示開(kāi)始的下標(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ù)組長(zhǎng)度為負(fù)數(shù)時(shí),表示數(shù)組長(zhǎng)度+該數(shù);
結(jié)束位置小于開(kāi)始位置時(shí),返回空數(shù)理;
4.indexOf()和lastIndexOf()方法:
參數(shù):第一個(gè)參數(shù)表示要查找的項(xiàng),第二個(gè)參數(shù)表示開(kāi)始查找位置(可選);
indexOf():從頭開(kāi)始向后查找;
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)開(kāi)始遍歷數(shù)組,直到數(shù)組的第一項(xiàng);
希望我的文章可以幫助到你,謝謝~~