基于关键字javascript组合2个数组
Combine 2 arrays based on key javascript
我正在尝试基于键"parent_id"组合两个数组。以下是阵列和所需输出:
数组1:项目组:
var itemGroups = [
{
"id":1,
"value":"Item Group 1",
"order":1
},
{
"id":4,
"value":"Item Group 2",
"order":2
},
{
"id":12,
"value":"Item Group 3",
"order":4
}
];
数组2:分组中的项目:
var itemChildren = [
{
"id":68,
"value":"An example item from Group 1",
"parent_id":1
},
{
"id":69,
"value":"An example item from Group 2",
"parent_id":4
}
{
"id":76,
"value":"An example item from Group 3",
"parent_id":12
}
];
所需输出:
var itemGroupsWithChildren = [
{
"id":1,
"value":"Item Group 1",
"order":1,
"children":[
{
"id":68,
"value":"An example item from Group 1",
}
]
},
{
"id":4,
"value":"Item Group 2",
"order":2,
"children":[
{
"id":69,
"value":"An example item from Group 2"
}
]
},
{
"id":12,
"value":"Item Group 3",
"order":4,
"children":[
{
"id":76,
"value":"An example item from Group 3"
}
]
}
];
如有任何帮助,我们将不胜感激。谢谢
编辑:
var dataServiceGroups = [
{"id":65,"value":"Group 1","order":1,"picklist_id":12},
{"id":118,"value":"Group 2","order":2,"picklist_id":12},
{"id":120,"value":"Group 2","order":4,"picklist_id":12},
{"id":222,"value":"Group 3","order":3,"picklist_id":12},
{"id":223,"value":"Group 4","order":5,"picklist_id":12},
{"id":224,"value":"Group 5","order":6,"picklist_id":12},
{"id":225,"value":"Group 6","order":7,"picklist_id":12},
{"id":226,"value":"Group 7","order":8,"picklist_id":12},
{"id":227,"value":"Other Group","order":9,"picklist_id":12}
];
var dataServices = [
{"id":68,"value":"Item From Group 1","order":3,"picklist_id":13,"parent_id":65},
{"id":228,"value":"Other Service","order":4,"picklist_id":13,"parent_id":227}
];
我建议您将数组2转换为一个对象,这样您就可以很容易地在其中找到东西,然后使用它将数组1映射到您想要的结果。
看看下面的
var itemC = {}
itemChildren.forEach(function(child) {
var tmp = {};
tmp['id'] = child.id;
tmp['value'] = child.value;
itemC[child.parent_id] = tmp
});
var desiredOutput = itemGroups.map(function(item) {
item[children] = itemC[item.id];
return item;
})
它看起来像这个
itemGroups.map(function(object, index) {
object["children"] = itemChildren[index];
});
为子对象创建分组数组,然后将对象添加到组中:
var groupedChildren = [];
itemChildren.forEach(function(item) {
var parentID = item.parent_id;
//Create the array for the group by parent id
if(typeof groupedChildren[parentID] == "undefined") {
groupedChildren[parentID] = [];
}
groupedChildren[parentID].push(item);
});
//Now add the grouped children to itemGroups
var itemGroupsWithChildren = itemGroups.map(function(group) {
group['children'] = groupedChildren[group.id] || []; //put empty array if no children
return group;
});
相关文章:
- 如何使用 node.js 比较两个 json 数组
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 在数组中的一个元素上设置多个值
- 访问$.ajax()函数中的两个不同数组
- 在对象数组中查找多个值的d3范围
- 正在更新mongod中两个对象内部的数组
- 如何循环通过2个对象数组并通过匹配id进行合并
- 如何使用javascript合并两个对象数组
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 在数组JS中查找三个重复项
- 我正在尝试使用多个2数组来绑定svg圆的数据,但不知道如何绑定
- JS:从整个数组中每次得到5个项目,并得到平均值
- 带有多个答案选项的Javascript动态数组窗口
- 使用数据数组创建多个类似组件
- 如何从数组中删除几个相同的项
- 根据多个值筛选数组
- 创建具有2个唯一数字的Javascript数组
- 在 JQuery 验证中验证多个“数组命名”文件输入和下拉列表