先看一个例子
// 去重 const numArr2 = [1, 2, 2, 3, 4, 5, 6, 6]; // 这里是普通数组去重,对象数组去重跟这个例子方法不同 const newNumArr2 = numArr2.reduce((item, next) => { item.indexOf(next) === -1 && item.push(next); return item; }, []);
item: 目前已经得到的返回值(上一次回调函数的结果), 初始是设置的第二个参数,例子是[];
next: next是将要操作的下一项,例子第一项是1;
所以,例子第一步是判断[]里是否包含next即1,不包含,所以item变为[1],第二步判断[1]里是否包含2,
不包含,所以item变为[1,2],第三步,item[1,2]里已经包含next即2,item不做操作,依旧是[1,2],
以此类推,得到最后的结果newNumArr2 = [1,2,3,4,5,6]。