ES5中数组的新方法
1、forEach()
从头到尾遍历数组,为每个元素调用指定函数
第一个参数:传递的函数
该函数调用的参数:数组元素、元素索引、数组本身(不需要全部写上)
var array = [1,2,3,4,5];
var sum = 0;
array.forEach(function(val){sum += val});
console.log(sum);
array.forEach(function(val,index,array)
{
console.log(val+' '+index+' '+array[index]);
})
结果:
2、map()
调用数组的每个元素传递给指定的函数,并返回一个包含返回值的新数组;传递给map()的函数有返回值,map()返回新数组,不会修改调用的数组;(相当于做一个原函数到现函数的映射)
var a = [1,2,3,4,5,6];
var b = a.map(function(val){
return val*val;
})
console.log(b); //[1,4,9,16,25,36]
3、 filter()
返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加;
新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。(相当于做一次过滤,挑选原数组中合适的值进行返回)
var a = [1,2,3,4,5];
var b = a.filter(function(val){
return val%2 == 0;
})
console.log(b); //[2,4]
4、indexOf(),lastIndexOf()
用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1;
indexOf()从头至尾搜索;lastIndexOf()则反向搜索;
参数:1、第一个是需要搜索的值;2、第二个参数(可选)制定数组中的一个所索引,即从哪开始搜索,若省略,indexOf()从头开始搜索;lastIndexOf()则反向搜索
第二个参数可以是负数,-1表示数组最后一个元素(负数代表的元素下标用数组长度加上这个负数的值就是改负数代表的下标元素)
var a = [1,2,3,4,2,1];
console.log(a.indexOf(1)); //0
console.log(a.indexOf(1,1)); //5
console.log(a.lastIndexOf(1)); //5
console.log(a.lastIndexOf(1,-2)); //0
5、reduce(),reduceRight()
-
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
-
reduce() 可以作为一个高阶函数,用于函数的 compose。
-
注意: reduce() 对于空数组是不会执行回调函数的。
-
reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
参数和语法详解:
var a = [1,2,3,4,5,6];
console.log(a.reduce((sum,val,index,a) =>{
return sum+val;
},10)); //31