javascript - Javascript:将对象添加到具有相同键的现有对象数组不起作用
问题描述
我正在尝试添加newList
到Array 名称与 name 相同Grouped
的 Array 中。例如,将“乳制品和鸡蛋”对象从 Array 连接起来。这在所需的输出中得到了证明。Grouped
newList
newList
Grouped
我试过的:
const existingCatrgory = Grouped.findIndex(
item => item.name === 'Spices' || 'Dairy and Eggs' || 'Produce'
);
if (existingCatrgory >= 0) {
const findShoppingCategory = Grouped.filter(x => x.name === 'Spices' || 'Dairy and Eggs' || 'Produce')
const merge = findShoppingCategory.map((element) => {
return {
...element,
data: element.data.concat(newList)
};
});
} else {
return Grouped.concat(newList)
}
这是newList
:
const newList = [{
data: [{
value: "whipped cream"
}, ],
name: "Dairy and Eggs",
},
{
data: [{
value: "mushrooms",
}],
name: "Produce",
}
]
这是Grouped Array
const Grouped = [{
data: [{
value: "paprika",
}, ],
name: "Spices",
},
{
data: [
{value: "milk"},
{value: "Blue cheese"},
],
name: "Dairy and Eggs",
},
];
期望的输出:
const Output = [{
data: [
{ value: "paprika" },],
name: "Spices",
},
{
data: [
{ value: "milk" },
{ value: "Blue cheese" },
{ value: "whipped cream" },
],
name: "Dairy and Eggs"
},
{
data: [
{ value: "mushrooms" }
],
name: "Produce",
}
];
解决方案
这是一种方法:
const Grouped = [{
data: [{
value: "paprika",
}, ],
name: "Spices"
},
{
data: [
{value: "milk"},
{value: "Blue cheese"},
],
name: "Dairy and Eggs"
},
];
const newList = [{
data: [{
value: "whipped cream"
}, ],
name: "Dairy and Eggs"
},
{
data: [{
value: "mushrooms",
}],
name: "Produce"
}
]
const mergedList = JSON.parse(JSON.stringify(Grouped));
newList.forEach(function(item){
let thisGroup = mergedList.filter(g => g.name == item.name);
if (thisGroup.length > 0) {
for (let i = 0; i < item.data.length; i++) {
thisGroup[0].data.push({"value": item.data[i].value});
}
} else {
mergedList.push(item);
}
})
console.log(mergedList);
只需遍历每个新项目并检查名称是否已存在,如果存在,请将新 data.value 附加到现有数据列表中。如果它不存在,请为该项目创建一个新条目。
根据要求,我更新了代码以包括获取 Grouped 数组的副本并合并到该数组中。由于 Grouped 数组具有简单的结构,因此我使用 JSON 将其字符串化并将其解析回一个新数组。
推荐阅读
- android - 单击底部导航时,仅第一个和最后一个片段发生变化
- javascript - simple-git:使用 simple-git 的 SSH 身份验证示例
- r - 如何使用 dplyr 库将三个数据集放在一起并提供基于相似案例的订单?
- amazon-web-services - AWS - 服务器到服务器发布-订阅
- google-cloud-platform - 在 bigquery DTS 中将用户帐户更新为服务帐户
- python - 如何将大数据框与小数据框合并?
- swift - 从 SceneKit 中的 SCNGeometry 中提取人脸信息
- node.js - 在构建期间继续编码/开发正在构建 Angular 2+
- c# - 如何使用 c# 运行 sqlite3 内联命令?
- asp.net-mvc - 使用分页符在单个 Word 文档中导出多个 MVC 视图