javascript - 通过匹配值组合对象数组
问题描述
我想组合两个对象数组,以使我更容易在 HTML 中显示。该函数应在 arr1 中找到名为“id”的键的匹配值,并在 arr2 中找到名为“source”的键的匹配值。这是它的样子:
let arr1 = [
{id = 1,
name = "Anna"},
{id = 2,
name = "Chris"}
]
let arr2 = [
{childName = "Brian",
{source = 1}},
{childName = "Connie",
{source = 2}}
{childName = "Dory",
{source = 1}}
]
我尝试了不同的方法,最好的方法是使用 forEach 并在数组上进行过滤。我正在尝试在名为“children”的 arr1 对象中设置一个新属性。
arr1.forEach(el => el.children = arr2.filter(checkMatch));
function checkMatch(child){
for(let i=0;i<arr1.length;i++){
child.childName.source === arr1[i].id
}
}
这导致向第一个对象添加适当的孩子(安娜现在有布莱恩和多莉)所以它是正确的,但它也将相同的孩子添加到第二个对象(所以克里斯也有布莱恩和多莉)。我的错误在哪里?我猜这个循环没有按照我想要的方式工作,但我不知道是哪一个以及它是如何发生的。
解决方案
由于您创建 arr1 和 arr2 对象的语法无效,我试图猜测您的对象的结构。
let arr1 = [
{
id: 1,
name: "Anna"
},
{
id: 2,
name: "Chris"
}
];
let arr2 = [
{
childName: "Brian",
source: 1
},
{
childName: "Connie",
source: 2
},
{
childName: "Dory",
source: 1
}
];
arr2.map((child) => {
for (let parent of arr1) {
if (parent.id == child.source) {
if (!parent.children) {
parent.children = [];
}
parent.children.push(child);
}
}
});
console.log(arr1);
推荐阅读
- node.js - 创建 JSON 响应键值的 mongodb 集合
- reactjs - 了解 React 中的 Redux
- .net-core - .Net Core2.2:Swagger 不显示 UI
- azure - 使用 CloudTable 与 partitionKey 和 rowKey 筛选器绑定到 v2 Azure Functions 中的表存储
- javascript - 使用 JavaScript/python 获取音频峰值
- notifications - 运行前台服务以获取位置的问题
- amazon-web-services - Master公共DNS指向内部时如何连接到emr mastere节点?
- scala - Spark [Scala]:不明确的 groupBy 列名
- hana - 当我尝试创建数据存储、数据库 SAP HANA CLOUD 时,在地理服务器中使用了错误的端口 (30015) 号
- mysql - mysql 允许在终端中使用每个密码进行访问,但在 Laravel 中则不允许