【发布时间】:2020-04-15 16:47:32
【问题描述】:
我有一个包含嵌套类别对象的对象数组(见下文)。我想删除重复的对象(基于“objectID”)并创建一个新数组,其中仅包含具有更多嵌套“hierarchicalCategories”键值对的对象
const objectsArray = [
{
"objectID": 1234,
"hierarchicalCategories": {
"lvl0": "Women's",
"lvl1": "Women's > Shirts",
"lvl2": "Women's > Shirts > Tees"
}
},
{
"objectID": 5678,
"hierarchicalCategories": {
"lvl0": "Men's"
}
},
{
"objectID": 1234,
"hierarchicalCategories": {
"lvl0": "Women's"
}
},
{
"objectID": 5678,
"hierarchicalCategories": {
"lvl0": "Men's",
"lvl1": "Men's > Shoes"
}
}
]
所以预期的结果如下所示:最终数组将过滤重复项并保留每个对象的一个实例...“objectID”:1234 个实例,其中“hierarchicalCategories”最多为“lvl2”和“objectID” : 5678 个实例,其中 "hierarchicalCategories" 达到 "lvl1"
const newArray = [
{
"objectID": 1234,
"hierarchicalCategories": {
"lvl0": "Women's",
"lvl1": "Women's > Shirts",
"lvl2": "Women's > Shirts > Tees"
}
},
{
"objectID": 5678,
"hierarchicalCategories": {
"lvl0": "Men's",
"lvl1": "Men's > Shoes"
}
}
]
我有这个函数,它适用于基于过滤重复 objectID 的新数组,但我不确定如何创建逻辑以使对象具有更多“hierarchicalCategories”键值对。
const newArray = Array.from(new Set(objectsArray.map(a => a.objectID)))
.map(objectID => {
return objectsArray.find(a => a.objectID === objectID)
})
【问题讨论】:
-
什么不起作用?请添加您的代码。
-
@NinaScholz 我更新了我的答案以包含一个用于过滤重复 objectID 的函数,但我不确定如何根据嵌套对象中“hierarchicalCategories”的数量进行过滤
标签: javascript arrays