数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)
map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组
reduce()方法接受一个函数作为累加器,数组中的每一个值开始缩减,最终为一个值。最终的返回结果为一个值
foreach() 遍历数组方法
filter() 方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组
map,filter都是生成一个新数组,不同的是map处理的方法里面returen 新数值,filter里面return true/false
map用于所有元素进行处理,并生成新元素,原数组不变
el:求圆的面积
var radii=[10,20,30]
var areas=radii.map((radius)=>{
var area=Math.PI * (radius * radius);
return area.toFixed(0);
});
console.log(areas);
输出结果:["314","1257","2827"]
reduce用于元素累加、元素比较大小
el:拼接所有数组
[[0,1],[2,3],[4,5]].reduce((acc,cur)=>acc.concat(cur));
输出结果:[0,1,2,3,4,5]
filter用于过滤
el:排除掉小于10的数
var isBigEnough=(element)=>{
return element >10;
}
[12,5,8,120,44].filter(isBigEnough);
输出结果:[12,120,44]
高阶用法:面试题上的
el:数组去重 filter + indexOf
function unique(arr){
var res=arr.filter(function(item,index,array){
returun array.indexof(item)===index;
//判断元素在数组中第一次出现位置是不是当前位置
})
return res;
}
el:找出数组中的最大值 reduce
[6, 4, 1, 8, 2, 11, 3].reduce((pre,nex)=>{
return Math.max(pre,nex);
})
el:打乱数组的方法 sort
[1,2,3,4].sort(()=>{
return 0.5 - Math.random();
})