1、數(shù)組的棧方法(后進(jìn)先出):push()是向最后一項(xiàng)推元素進(jìn)入;pop()方法是取到最后一個(gè)元素;
2、數(shù)組的隊(duì)列方法(先進(jìn)先出):shift()是取得第一項(xiàng)元素,和push方法組成了隊(duì)列方法;
3、數(shù)組的反隊(duì)列方法:unshift()可以是push()的反方法,向前端添加任意個(gè)元素,而和pop()取得最后一個(gè)元素的方法連用的話,則是反隊(duì)列方法。
4、數(shù)組的重排列方法:
reverse()方法僅僅是將數(shù)組中的值進(jìn)行反轉(zhuǎn),不管順序。
而sort()方法是將數(shù)組重的值進(jìn)行升序排列,但是是按照字符串進(jìn)行排列。因此可以利用比較函數(shù)compare()來(lái)進(jìn)行兩個(gè)值得升序排列,例如這樣:[數(shù)組].sort(compare)。
5、數(shù)組的操作方法:
concat()函數(shù),[數(shù)組].concat("A",["B","C"]),將參數(shù)(單項(xiàng)或者整個(gè)數(shù)組)逐個(gè)追加至已有數(shù)組的末尾,如果沒(méi)有參數(shù)僅僅是復(fù)制該數(shù)組;
slice()函數(shù),是從已有數(shù)組中取出元素(包含起始元素,但那不包含結(jié)束元素),如果是負(fù)數(shù)參數(shù),則用數(shù)組長(zhǎng)度加上該值后的范圍進(jìn)行取值,如果是起始<結(jié)束元素,則返回空數(shù)組;
splice()函數(shù)有三種用法,返回的是刪除后的項(xiàng)組成的數(shù)組,如果沒(méi)有刪除,則返回空數(shù)組。
①刪除任意數(shù)量的項(xiàng),需要2個(gè)參數(shù)splice(起始項(xiàng),刪除的項(xiàng)數(shù)),包括起始項(xiàng)在內(nèi)。
②插入任意數(shù)量的項(xiàng),需要3個(gè)參數(shù),splice(起始項(xiàng),0,插入的任意多個(gè)項(xiàng))。
③替換項(xiàng),需要3個(gè)參數(shù),splice(起始項(xiàng),刪除的項(xiàng)數(shù),插入的任意多個(gè)項(xiàng))。
6、數(shù)組的位置方法
IndexOf(要查找的項(xiàng)[,起始查找項(xiàng)的位置]),從前往后查找
var num=[1,2,3,4,5,4,3,2,1];
num.IndexOf(4); //3
num.IndexOf(4,4); //5
LastIndexOf(要查找的項(xiàng)[,起始查找項(xiàng)的位置]),從后向前查找
var num=[1,2,3,4,5,4,3,2,1];
num.LastIndexOf(4); //5
num.LastIndexOf(4,4); //3
返回值都是查找項(xiàng)的索引值,沒(méi)找到返回-1。
特殊用法:
var person={"name":"nk","age":"23"};
var people=[{"name":"nk","age":"23"}];
var morePeople=[person];
people.IndexOf(person); //-1
morePeople.IndexOf(person); //0
7、數(shù)組的迭代方法
這些方法接受三個(gè)參數(shù):數(shù)組的項(xiàng),項(xiàng)的索引,數(shù)組本身
every(),每一項(xiàng)運(yùn)行給定函數(shù),每一項(xiàng)都返回true,則返回true;
var numbers=[1,2,3,4,5,6];
var everyRuselt=numbers.every(function(item,index,array){
return item>2;
});
console.info(everyRuselt); //false
some(),每一項(xiàng)運(yùn)行給定函數(shù),某一項(xiàng)返回true,則返回true;
var numbers=[1,2,3,4,5,6];
var someRuselt=numbers.some(function(item,index,array){
return item>2;
});
console.info(someRuselt); //true
filter(),每一項(xiàng)運(yùn)行給定函數(shù),返回返回值為true項(xiàng)組成的數(shù)組;
var numbers=[1,2,3,4,5,6];
var filterRuselt=numbers.filter(function(item,index,array){
return item>2;
});
console.info(filterRuselt); //[3,4,5,6]
foreach(),每一項(xiàng)運(yùn)行給定函數(shù),沒(méi)有返回值;
var numbers=[1,2,3,4,5,6];
var foreachRuselt=numbers.foreach(function(item,index,array){
//執(zhí)行某些操作
});
console.info(foreachRuselt); //無(wú)返回值
map(),每一項(xiàng)運(yùn)行給定函數(shù),返回每項(xiàng)調(diào)用函數(shù)后的結(jié)果組成的數(shù)組。
var numbers=[1,2,3,4,5,6];
var mapRuselt=numbers.map(function(item,index,array){
return item+2;
});
console.info(mapRuselt); //[3,4,5,6,7,8]
8、數(shù)組的縮小方法
reduce()方法和reduceRight()方法,操作相同,執(zhí)行順序相反。
這些方法接受四個(gè)參數(shù):pre,cur,index,array;第一次調(diào)用會(huì)將前兩項(xiàng)進(jìn)行操作,將結(jié)果值返回給函數(shù)第二次調(diào)用的第一項(xiàng)pre參數(shù)。
var num=[1,2,3,4,5];
num.reduce(function(pre,cur,index,array){
console.info(pre+cur); //15
});