gpt4 book ai didi

javascript - 合并具有相同 JSON 键的对象

转载 作者:行者123 更新时间:2023-11-28 12:13:35 25 4
gpt4 key购买 nike

我在按键将 JSON 对象数组合并在一起时遇到一些麻烦。有人能用 Javascript 找到一个好的解决方案吗?

{
"code": "12345",
"error": "12345 error 1"
},
{
"code": "12345",
"error": "12345 error 2"
},
{
"code": "67890",
"error": "67890 error 1"
},
{
"code": "67890",
"error": "67890 error 2"
},
{
"code": "67890",
"error": "67890 error 3"
},
{
"code": "67890",
"error": "67890 error 4"
},
{
"code": "67890",
"error": "67890 error 5"
},
{
"code": "12092",
"error": "12092 error 1"
},
{
"code": "12092",
"error": "12092 error 2"
}

应转换为

{
"code": "12345",
"error": "12345 error 1, 12345 error 2"
},
{
"code": "67890",
"error": "67890 error 1, 67890 error 2, 67890 error 3, 67890 error 4, 67890 error 5"
},
{
"code": "12092",
"error": "12092 error 1, 12092 error 2"
}

任何帮助将不胜感激。我为这个问题绞尽脑汁很久了,但似乎就是想不明白。

最佳答案

使用数组reduce创建新的合并对象数组。在回调函数内检查累加器数组是否有一个已经具有code的对象。为此,请使用findIndex。如果代码匹配,则更新错误。否则将当前对象压入累加器

const data = [{"code":"12345","error":"12345 error 1"},{"code":"12345","error":"12345 error 2"},{"code":"67890","error":"67890 error 1"},{"code":"67890","error":"67890 error 2"},{"code":"67890","error":"67890 error 3"},{"code":"67890","error":"67890 error 4"},{"code":"67890","error":"67890 error 5"},{"code":"12092","error":"12092 error 1"},{"code":"12092","error":"12092 error 2"}];

let mergedData = data.reduce(function(acc, curr) {
let findIndex = acc.findIndex(function(item) {
return item.code === curr.code;
})
if (findIndex === -1) {
acc.push(curr)
} else {
acc[findIndex].error += ', ' + curr.error
}
return acc;
}, []);

console.log(mergedData)

关于javascript - 合并具有相同 JSON 键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025743/

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