博客同时同步到github
位置要领
这两个要领都吸收两个参数:要查找的项和示意出发点位置的索引(可选),
indexOf()
从数组开首最先向后查,相反的,lastIndexOf()
从数组的末端最先向前查找,返回查找的项在数组中的位置,没有找到返回-1。
1.indexOf()
var array = [1,2,3,2,1];
console.log(array.indexOf(2));//1
2.lastIndexOf
console.log(array.lastIndexOf(2));//3
兼容性:支撑它们的浏览器包含IE9+,Firefox2+,Safari3+,Opera9.5+,Chrome
迭代要领
ECMASCript5为数组定义了5个迭代要领。每一个要领吸收两个参数:
要在每一项上运转的函数和运转该函数的作用域对象(可选)—影响this的值。
传入这些要领中的函数吸收三个参数:
数组项的值(ele),该项在数组中的位置(index),数组自身(arr)。这5种要领都邑对数组的每一项运转给定函数然则差别的要领的返回值差别。
every():若该函数对每一项都返回true,则返回true
var num = [1,2,3,2,1];
var result = num.every(function(item,index,array){
return (item > 2);
})
console.log(result);//true
filter():返回该函数会返回true的项构成的数组
var num = [1,2,3,2,1];
var result = num.filter(function(item,index,array){
return (item > 2);
})
console.log(result);//[3]
forEach():无返回值
var num = [1,2,3,2,1];
var result = num.forEach(function(item,index,array){
return (item > 2);
})
console.log(result);//undefined
map():返回每次挪用效果构成的数组
var num = [1,2,3,2,1];
var result = num.map(function(item,index,array){
return (item > 2);
})
console.log(result);// [false,false,true,false,false]
some():假如该函数中有一项返回true,则返回ture
var num = [1,2,3,2,1];
var result = num.some(function(item,index,array){
return (item > 2);
})
console.log(result);//true
声明
:以上要领均不会修正数组自身
兼容性:支撑它们的浏览器包含IE9+,Firefox2+,Safari3+,Opera9.5+,Chrome
减少要领
ECMAScript增加了两个减少数组的要领,这两个要领都邑迭代数组中的一切项,然后构建一个终究返回的值。
这两个要领都吸收两个参数:
一个在每一项上挪用的函数,一个是作为减少基本的初始值(可选)。
函数吸收4个参数:
前一个值(pre),当前值(cur),项的索引(index),数组对象(arr)。
这个函数返回的任何值都邑作为第一个参数自动传给下一项。第一次迭代发作在数组的第二项,因而第一个参数是是数组的第一项,第二个参数是数组的第二项。
1.reduce():迭代从数组的第一项到末了一项
var val = [1,2,3]
var sum = val.reduce(function(pre,cur,index,array){
return pre + cur;
})
console.log(sum);//6
var a = [1,2,3,4,5];
a.reduce(function(pre,curr,index,arr){
console.log(pre);
console.log(curr);
console.log(index);
console.log(arr);
})
1
2
1
[1,2,3,4,5]
undefined
3
2
[1,2,3,4,5]
undefined
4
3
[1,2,3,4,5]
undefined
5
4
[1,2,3,4,5]
2.reduceRight():迭代从数组的末了一项到第一项
同上面效果一样。
兼容性:支撑它们的浏览器包含IE9+,Firefox3+,Safari4+,Opera10.5+,Chrome