js数组的方法–reduce
reduce和迭代方法(map,forEach,filter…)一样,都会对数组进行遍历,reduce与他们不同的是函数的第一个参数得到的是迭代计算后的结果(处理完成之后的值)
reduce(fn(prev,cur,index,arr),{})
参数:
1、要执行的函数,函数中的参数,分别为
prev:上次调用函数的返回值
cur:当前元素
index:当前元素索引
arr:被遍历的数组
2、函数迭代的初始值
案例:
1、没有设置初始迭代值
let arr = [1, 2, 3, 4];
let sum = arr.reduce((prev, cur, index, arr)=>{
console.log(prev, cur, index);
return prev + cur;
})
console.log(arr, sum)
运行结果
2、设置初始迭代值
let arr = [1, 2, 3, 4];
let sum = arr.reduce((prev, cur, index, arr)=>{
console.log(prev, cur, index);
return prev + cur;
},5)
console.log(arr, sum);
运行结果
从上述两个案例中我们可以看出,当我们设置初始迭代值得时候,当前开始计算的值,就是我们设置的值(5),当我们没有设置值得时候就是数组的第一项(这里默认值是1),同时我们可以看出,prev是我们计算之后的值
3、数组去重
let arr = ['name','age','long','short','long','name','name','sex','age']
let arrResult = arr.reduce((pre,cur) =>{
if(!pre.includes(cur)){
pre.push(cur)
}
return pre;
},[])
console.log(arrResult)
运行结果
[“name”, “age”, “long”, “short”,“sex”]