//array1.reduce(callbackfn[, initialValue])
//
//array1 必需。一个数组对象。
//callbackfn 必需。一个接受最多四个参数的函数。
//nitialValue 可选。如果指定 initialValue,则它将用作初始值来启动累积。
//
//返回值
//通过最后一次调用回调函数获得的累积结果。
function arraryRepeat(arr, name) {
var hash = {};
return arr.reduce(function(item, next) {
//item 为之前的计算结果,next为数组的各项值
//如item 初始值[], reduce一开始接收了[]空数组
//next为 当前元素 循环数组的每一项
console.log('item', item);
console.log('next', next);
console.log('next[name]', next[name]);
console.log('hash', hash[next[name]]);
console.log('Boolean', Boolean(hash[next[name]]));
hash[next[name]] ? "" : (hash[next[name]] = true && item.push(next));
return item;
}, []);
};
console.log(arraryRepeat([{
name: 1,
id: 1
},
{
name: 2,
id: 1
},
{
name: 3,
id: 3
},
{
name: 4,
id: 4
},
{
name: 5,
id: 5
}
], 'id'))
网友评论