const data = [
{ id: 1, name: ‘张三’, age: 15, },
{ id: 2, name: ‘John’, age: 18, },
{ id: 3, name: ‘李四’, age: 18, },
{ id: 1, name: ‘张三’, age: 15, },
{ id: 4, name: ‘Jack’, age: 18, },
{ id: 5, name: ‘王五’, age: 10, },
{ id: 4, name: ‘Jack’, age: 18, },
{ id: 2, name: ‘John’, age: 18, },
];
let hash = {};
const data2 = data.reduce((preVal, curVal) => {
hash[curVal.id] ? ” : hash[curVal.id] = true && preVal.push(curVal);
return preVal
}, [])
解析:reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
语法:
arr.reduce(callback,[initialValue])
callback (执行数组中每个值的函数,包含四个参数)
previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
currentValue (数组中当前被处理的元素)
index (当前元素在数组中的索引)
array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)
网友评论