Javascript 具有重复属性值的对象数组

Javascript 具有重复属性值的对象数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我有一个对象数组,如何才能得到那些具有重复属性值的对象 var array = [{"id":1,"attr":5},{"id":2,"attr":3},{"id":3,"attr":5}]; 这里它应该返回array[0]和array[2],因为这些元素具有重复的属性值(attr=5)。 并返回唯一数组。 数组=[{“id”:2,“attr”:3}] 针对未排序数据的单循环方法,使用哈希表临时收集组的第一个对象或仅指示组的重复项 var数组=[{“id”:1,“attr”:5},{“id”

我有一个对象数组,如何才能得到那些具有重复属性值的对象

var array = [{"id":1,"attr":5},{"id":2,"attr":3},{"id":3,"attr":5}];
这里它应该返回
array[0]
array[2]
,因为这些元素具有重复的属性值(attr=5)。 并返回唯一数组。
数组=[{“id”:2,“attr”:3}]

针对未排序数据的单循环方法,使用哈希表临时收集组的第一个对象或仅指示组的重复项

var数组=[{“id”:1,“attr”:5},{“id”:2,“attr”:3},{“id”:3,“attr”:5}],
hash=Object.create(null),
结果=数组。减少((r,o)=>{
if(哈希中的o.attr){
if(散列[o.attr]){
r、 push(hash[o.attr]);
hash[o.attr]=false;
}
r、 推(o);
}否则{
散列[o.attr]=o;
}
返回r;
}, []);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用生成器函数和嵌套循环检查重复项:

 function* dupes(arr, key) {
    for(const [index, el] of arr.entries()) 
      for(const  el2 of arr.slice(index + 1)) 
        if(index !== index2 && el[key] === el2[key])
           yield [el, el2];
 }
因此,您可以将其用作:

 for(const [dupe1, dupe2] of dupes(yourArray, "attr"))
    console.log(`${dupe1} collides with ${dupe2}`);

@Cerburs,不,op想要数组中超过时间的那些。@NinaScholz:查找重复项的过程不会改变。另外:没有尝试,这只是一个要求,期望工作代码得到回报。堆栈溢出不是免费的代码编写服务,请说明您的代码/努力以及实际问题是什么。为什么
Object.create(null)
而不是
{}
?它创建了一个没有原型的空对象。为什么要使用这样的嵌套函数来初始化
哈希值?这对代码的可读性/可维护性并没有什么好处