我试图消除对象数组中的重复项。我希望我的代码是线性的,因此我使用哈希表:
output = Array.from(new Set(output.map(e => e.company)))
.map(company => { return output.find(e => e.company === company) })
这段代码适用于这个对象数组:
let output = [
{ company: 'sony'},
{ company: 'sony'},
{ company: 'apple'}
]
然而问题在于我想要重复使用这段代码,因此我希望将其移动到一个函数中,该函数会接受 output
数组和 company
字符串。我不知道如何实现,我尝试过像这样:
const uniq = (array, key) => {
return Array.from(new Set(array.map( e => e[key] )))
.map(key => { return array.find(e => e[key] === key) })
}
但是这返回一个包含两个未定义值的数组。
另外一件事是,对于如此微不足道的任务来说,这段代码相当复杂。难道没有更简单的方法在不损失性能的情况下完成同样的任务吗?