Array.prototype.filter()
filter()方法会创建一个新的数组,所有通过测试的元素,如果没有任何数组元素通过测试,则返回空数组。
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Array.prototype.map()
map()方法会返回一个由原数组执行回调函数后的结果组成的数组,其不会改变原数组
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
Array.prototype.reduce()
对累加器和数组的每个值(从左到右)执行一个函数,以将其减少为单个值,返回值为函数累计处理的结果。
arr.reduce(callback,[initialValue])
callback 执行数组中每个值的函数,有四个参数:
- accumulator 上一次调用回调返回的值,或者是提供的初始值(initialValue);
- currentValue 数组中正在处理的元素;
- currentIndex 数据中正在处理的元素索引,如果提供了initialValue,从0开始;否则从1开始;
- array 调用reduce的数组。
initialValue 可选,其值用于第一次调用 callback 的第一个参数。
应用场景:
- 累加
let arr = [1,2,3]
let sum = arr.reduce(function(acc, cur,index,arr){
return acc + cur
}, 0)
console.log(sum)
- 获取数组最大值
let arr = [1,2,3]
let max = arr.reduce(function(acc,cur){
Math.max(acc,cur)
})
console.log(max)
- 数组去重
let arr = [1,2,3,3]
let res = arr.reduce(function(acc,cur){
acc.indexOf(cur) == -1 && acc.push(cur)
return acc
},[])
console.log(res)