Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 对象的过滤器和uniq数组_Javascript_Filter_Uniq - Fatal编程技术网

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我需要获取重复的项目