面试题之去重

题目:

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&&current.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











原文地址:https://www.cnblogs.com/dandanyajin/p/14592309.html