题目:
var listData=[
{name:"李明",sort:"23"},
{name:"李明",sort:"423"},
{name:"李明",sort:"233"},
{name:"小王",sort:"33"},
{name:"小王",sort:"43"},
{name:"小王",sort:"13"},
{name:"小李",sort:"43"},
{name:"小李",sort:"53"},
{name:"小李",sort:"63"},
{name:"小赵",sort:"63"},
{name:"小赵",sort:"83"},
]
这个名字一样的去重 然后保留 sort数值最大
答案:
listData.sort((a,b)=>{return b.sort-a.sort})
let obj = {}
let newL = listData.reduce((current,next)=>{
obj[next.name]?'':obj[next.name] = true&¤t.push(next)
return current
},[])
console.log(newL)
知识点:
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。(和for循环类似)
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
function(total, currentValue, currentIndex, arr)回调函数,数组array中每条数据都会执行此回调
total为初始值。
currentValue为当前数值。
currentIndex为当前数值的索引值。
arr为被执行的数组
initialValue为设定的初始值,可有可无。建议有,如果没有初始值array为空数组时会报错。
参考链接 https://www.jianshu.com/p/e375ba1cfc47