根据索引值组合父级和子级 JSON 数组,并向其中添加另一个找到的属性。
数据:比较字段: ParentJSON - 索引 childJSON -parent_index
输出: - 家长 - 及其 child - 家长 - 及其子元素
parentJSON:
[{ index:1, name: 'a'}, {index:2, name: 'b'}, {index:3, name: 'c'}, {index:4, name: 'd'}]
childJSON:
[
{ index:1, name: 'aa', parent_index:1},
{index:2, name: 'ab', parent_index:1},
{index:3, name: 'ba', parent_index: 2},
{index:4, name: 'bb', parent_index: 2},
{index:5, name: 'ca', parent_index: 3},
{index:6, name: 'ad', parent_index: 1}
]
output:
[
{ index:1, name: 'a'},
{ index:1, name: 'aa', parent_index:1, found: true},
{ index:2, name: 'ab', parent_index:1, found: true},
{ index:6, name: 'ad', parent_index:1, found: true},
{ index:2, name: 'b'},
{ index:3, name: 'ba', parent_index:2, found: true},
{ index:4, name: 'bb', parent_index:2, found: true},
{ index:3, name: 'c'},
{ index:5, name: 'ca', parent_index:3, found: true},
{ index:4, name: 'd'},
]
最佳答案
由于您正在使用 lodash ,将使我的解决方案全部包含在 lodash 中。
解决这个问题的步骤是:
是映射
childJSON
,检查其parent的索引是否存在将两个 json 数组合并为一个。
按
名称
升序对它们进行排序。
将其写入代码将是:
var childJSON = [
{ index:1, name: 'aa', parent_index:1},
{index:2, name: 'ab', parent_index:1},
{index:3, name: 'ba', parent_index: 2},
{index:4, name: 'bb', parent_index: 2},
{index:5, name: 'ca', parent_index: 3},
{index:6, name: 'ad', parent_index: 1}
];
var parentJSON = [
{ index:1, name: 'a'},
{index:2, name: 'b'},
{index:3, name: 'c'},
{index:4, name: 'd'}
];
childJSON = _.map(childJSON, function(child) {
child.found = !!_.find(parentJSON, {index: child.parent_index});
return child;
});
var newArray = _.concat(childJSON, parentJSON);
newArray = _.sortBy(newArray, ['name']);
console.log(newArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
关于javascript - 使用 lodash 创建父子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519730/