Javascript 根据对象属性在对象数组中查找(并删除)重复项
我想删除对象数组中的重复项,具体取决于对象属性 简化示例: 假设您有如下数组:Javascript 根据对象属性在对象数组中查找(并删除)重复项,javascript,arrays,object,Javascript,Arrays,Object,我想删除对象数组中的重复项,具体取决于对象属性 简化示例: 假设您有如下数组: [ { name: 'alice', something: 123 }, { name: 'alice', something: 321 }, { name: 'bob', something: 213 } ] 我想删除对象,它们的名称具有相同的值,但我想通过一些自定义计算来决定要删除的对象(例如,为某物保留值较大的对象) 我能够在中调整已接受的答案,但对于超过2个副本
[
{
name: 'alice',
something: 123
},
{
name: 'alice',
something: 321
},
{
name: 'bob',
something: 213
}
]
我想删除对象,它们的名称
具有相同的值,但我想通过一些自定义计算来决定要删除的对象(例如,为某物保留值较大的对象
)
我能够在中调整已接受的答案,但对于超过2个副本来说,效果不太好。您可以尝试使用reduce和object,根据您的条件设置属性 然后将其转换为数组by Object.values
var-arr=[
{
名字:“爱丽丝”,
某物:123
},
{
名字:“爱丽丝”,
某物:321
},
{
姓名:'鲍勃',
某物:213
}
];
var res=arr.REDUCT((acc,b)=>{
如果((acc[b.name]&&acc[b.name].something 控制台日志(newArr)代码>您可以使用哈希表作为对同名对象的引用
var数组=[{name:'alice',something:123},{name:'alice',something:321},{name:'bob',something:213}],
结果=数组.reduce(函数(散列){
返回函数(r,a){
if(!(散列中的名称)){
hash[a.name]=r.push(a)-1;
返回r;
}
if(r[hash[a.name]].something