从任何数组中过滤唯一对象



我在javascript中有一个对象数组,我正在创建一个新的数组,但只有一些属性。我需要的是过滤唯一的对象并消除重复的对象,我想在同一个函数中完成但我不知道是否可行

这是一个数组:

let filters = [
{
"model":"audi",
"year":2012,
"country":"spain"
},
{
"model":"bmw",
"year":2013,
"country":"italy"
},
{
"model":"audi",
"year":2020,
"country":"spain"
}
]

功能如下:

function filterObject(data: any) {
let result = data.map((item: any) => {
return {
hub: {
country: item.country,
model: item.model
}
}
})
return result
}

这是我得到的:

[
{
"hub":{
"country":"spain",
"model":"audi"
}
},
{
"hub":{
"country":"italy",
"model":"bmw"
}
},
{
"hub":{
"country":"spain",
"model":"audi"
}
}
]

这就是我需要的:

[
{
"hub":{
"country":"spain",
"model":"audi"
}
},
{
"hub":{
"country":"italy",
"model":"bmw"
}
}
]

您可以使用Map来确保只有唯一的项:

function filterObject(data:any) {
const uniqueObjects:any = [];
const uniqueMap = new Map();
data.forEach((item:any) => {
const key = item.model + item.country;
if (!uniqueMap.has(key)) {
uniqueMap.set(key, true);
uniqueObjects.push({
hub: {
country: item.country,
model: item.model
}
});
}
});
return uniqueObjects;
}

游乐场

相关内容

  • 没有找到相关文章

最新更新