Javascript 对象的过滤器和uniq数组
我有一个对象数组。每个对象有两个字段“类型”和“位置”。我想知道是否有任何对象(在此数组中)具有相同的“类型”和“位置”(并获取它)。我怎样才能实现它?我知道如何过滤数组,但如何与其他对象进行比较Javascript 对象的过滤器和uniq数组,javascript,filter,uniq,Javascript,Filter,Uniq,我有一个对象数组。每个对象有两个字段“类型”和“位置”。我想知道是否有任何对象(在此数组中)具有相同的“类型”和“位置”(并获取它)。我怎样才能实现它?我知道如何过滤数组,但如何与其他对象进行比较 var数组=forms.filter(函数(obj){ 返回对象类型===100 });您可以对相同类型/位置的对象进行分组,并为长度大于1的对象填充分组结果 var data=[{type:'a',position:1},{type:'b',position:1},{type:'a',positi
var数组=forms.filter(函数(obj){
返回对象类型===100
});代码>您可以对相同类型/位置的对象进行分组,并为长度大于1的对象填充分组结果
var data=[{type:'a',position:1},{type:'b',position:1},{type:'a',position:2},{type:'b',position:2},{type:'c',position:1},{type:'c',position 1},{,
重复项=数组
.来自(
数据
.减少((m,o)=>{
var key=['type','position'].map(k=>o[k]).join('|');
返回m.set(key,(m.get(key)| |[])。concat(o));
},新地图)
.values()
)
.filter(({length})=>length>1);
控制台日志(重复)代码>这是另一种方法:
const数据=[
{类型:'a',位置:1},
{类型:'b',位置:1},
{类型:'a',位置:1},
{类型:'a',位置:2},
{类型:'b',位置:2},
{类型:'c',位置:1},
{类型:'c',位置:1}
]
常量重复=数据=>
数据减少((上一个、el、索引)=>{
const key=JSON.stringify({p:el.position,t:el.type})
上一个[键]=上一个[键]| |[]
上一个[键]。按下(el)
if(index==data.length-1){
返回Object.values(prev.filter)(dups=>dups.length>1)
}
返回上一个
}, {})
console.log(duplicates(data))
请参考@DilipBelgumpi的可能副本。请小心提供w3schools链接,因为其中一些链接有时非常过时。如有可能,请参考官方MDN文档。您想获取重复的项目还是唯一的项目?@NinaScholz我需要获取重复的项目