gpt4 book ai didi

javascript - 重构 JS 对象数组

转载 作者:行者123 更新时间:2023-11-30 08:18:47 24 4
gpt4 key购买 nike

我在 ReactJS 应用程序中工作,我在其中检索包含一些产品的 JSON,我需要重组此信息以便分类和显示信息。

我已经尝试过使用过滤器和 map ,但结果不如预期。

[
{
"barcode": "8434786768366",
"collection": "AW",
"colorCode": "413",
"colorName": "LIGHT WINE",
"familyCode": "1",
"familyName": "T-Shirts",
"genericProduct": "PM506471",
"id": 263917,
"productCode": "PM506471413S",
"productName": "T-SHIRT",
"productNameLang": "en",
"season": "2019",
"size": "S",
"subfamilyName": "SS T-Shirts"
},
{
"barcode": "8434786768342",
"collection": "AW",
"colorCode": "413",
"colorName": "LIGHT WINE",
"familyCode": "1",
"familyName": "T-Shirts",
"genericProduct": "PM506471",
"id": 263921,
"productCode": "PM506471413L",
"productName": "T-SHIRT",
"productNameLang": "en",
"season": "2019",
"size": "L",
"subfamilyName": "SS T-Shirts"
}
]

这是我正在使用的示例,尽管原始数组要大得多。我需要能够找到所有具有相同“genericProduct”的对象并将它们合并到一个对象中,以便删除重复项。但是,我需要保留信息而不是覆盖它。

按照上面的例子,这两个对象应该合并成这样:

[
{
"barcode": ["8434786768366", "8434786768342"],
"collection": "AW",
"colorCode": "413",
"colorName": "LIGHT WINE",
"familyCode": "1",
"familyName": "T-Shirts",
"genericProduct": "PM506471",
"id": [263917, 263917],
"productCode": ["PM506471413S","PM506471413L"],
"productName": "T-SHIRT",
"productNameLang": "en",
"season": "2019",
"size": ["S","L"],
"subfamilyName": "SS T-Shirts"
}
]

作为 tl;dr,我需要在一个对象数组中进行迭代以查看哪些对象具有相同的“genericProduct”键,然后检查每个属性以查看它是否不同。如果是,我需要将所述属性转换为存储所有值(两个或多个)的数组。

最佳答案

遍历数组并为每个 item 声明一个空对象。现在检查整个数组是否存在该对象中的重复项,并将重复的 property 合并到一个数组中。

const items = [
{
"barcode": "8434786768366",
"collection": "AW",
"colorCode": "413",
"colorName": "LIGHT WINE",
"familyCode": "1",
"familyName": "T-Shirts",
"genericProduct": "PM506471",
"id": 263917,
"productCode": "PM506471413S",
"productName": "T-SHIRT",
"productNameLang": "en",
"season": "2019",
"size": "S",
"subfamilyName": "SS T-Shirts"
},
{
"barcode": "8434786768342",
"collection": "AW",
"colorCode": "413",
"colorName": "LIGHT WINE",
"familyCode": "1",
"familyName": "T-Shirts",
"genericProduct": "PM506471",
"id": 263921,
"productCode": "PM506471413L",
"productName": "T-SHIRT",
"productNameLang": "en",
"season": "2019",
"size": "L",
"subfamilyName": "SS T-Shirts"
}
]

const result = []

const obj = {}
items.map(item =>{
Object.keys(item).map(key =>{
if(obj[key] && obj[key] !== item[key])
return obj[key] = [obj[key], item[key]].flat()
return obj[key] = item[key]
})
})

result.push(obj)


console.log(result)

关于javascript - 重构 JS 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com