Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据对象属性在对象数组中查找(并删除)重复项_Javascript_Arrays_Object - Fatal编程技术网

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