1.栈方法 push()和pop()
后入先出
push():末尾追加
pop():末尾弹出
2.队列方法
先入先出
unshift():头部添加
shift():头部取得
3.重排序方法
reverse()和sort()
reverse()反转数组项的顺序:
var a=[1,2,3,4,5,"p"];
alert(a.reverse()); //["p",5,4,3,2,1]
sort():默认情况下按升序排列数组项
sort()会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序,即使数组中每一项都是数字,最后比较的也是字符串,但这不是最佳方案,比如数组项有10和5,进行字符串比较时“10”会在“5”的前面,但是5应该比10小。因此sort()方法可以接受一个比较函数作为参数。
比较函数接受两个参数,如果第一个参数应该位于第二个参数之前,则返回负数,相等则返回0,第二个参数比第二个大则返回正数,一下就是一个比较简单的比较函数。
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1==value2){
return 0;
}else{
return 1;
}
}
var arr=[0,1,5,10,15];
arr.sort(compare); //[0,1,5,10,15]
对于数值类型或者其valueof()返回数值类型的对象类型,可以使用一个更简单的比较函数。
function conpare(num1,num2){
return num1-num2;
}
4.操作方法
concat():拼接数组
var color=["red","blue"];
var color2=color.concat("yellow",["black","brown"]) //[ "red","blue", "yellow" , "black","brown" ]
slice():基于当前数组创建新数组,不会影响原始数组(截取数组)
var arr=[1,2,3,4,5,6,7];
var arr2=arr.slice(1); //[2,3,4,5,6,7] 下标1到数组结束
var arr2=arr.slice(1,4); //[2,3,4] 下标1到4,不包含1和4
如果slice()接受的参数为负数,则此负数加上数组长度;
slice(-2,-1);数组长度为5 则等于slice(3,4)
splice():删除,插入,替换
三个参数:1.操作起始位置 2.删除的项数 3.插入的项
splice(0,2) :删除数组的前两项
splice(1,0,"red","yellow") : 从位置1开始插入两项
splice(1,1,"red","yellow"):从位置1删除一项,插入两项
5.位置方法
indexOf()与lastIndexOf();
这两个方法接受两个参数,查找项和开始查找的下标,找到返回下标值,没找到则返回-1,查找时使用===操作符;
indexOf()从头部开始查找,lastIndexOf()从尾部开始查找;
6.迭代方法
every():对数组中的每一项给定函数,每一项都返回true,则返回true;
some():对数组中的每一项给定函数,任一项返回true,则返回true;
filter():对数组中的每一项给定函数,返回函数会返回true项组成的数组;
foreach():对数组中的每一项给定函数,这个方法没有返回值;
map():对数组中的每一项给定函数,返回每次函数调用结果组成的数组;
var number=[1,2,3,4,5,4,3,2,1];
var everyResult=number.every((item,index,array) => {
return (item > 2);
})
alert(everyResult); //false
var someResult=number.every((item,index,array) => {
return (item > 2); })
})
alert(someResult); //true
var filterResult=number. filter((item,index,array) => {
return (item > 2); })
})
alert( filterResult ); //[3,4,5,4,3]
var mapResult=number. map((item,index,array) => {
return item*2;
})
alert( mapResult ); //[2,4,6,8,10,8,6,4,2]
foreach()本质上与使用for循环迭代数组一样,不做赘述
7.归并方法
reduce():从第一项开始,逐个遍历到最后;
reduceRight():从最后一项开始到第一项;
自动接收四个参数,前一个值,当前值,项的索引值和数组对象,这个函数返回的任何值都会作为第一个参数自动传给下一项,第一次迭代发生在第二项上。
var values=[1,2,3,4,5];
var sum=values.reduce( (prev,cur,index,arr) => {
return prev+cur;
})
alert(sum); //15
网友评论