gpt4 book ai didi

javascript - 使用 lodash 创建父子关系

转载 作者:行者123 更新时间:2023-12-03 01:48:34 26 4
gpt4 key购买 nike

根据索引值组合父级和子级 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'},
]

Plunker Link

最佳答案

由于您正在使用 lodash ,将使我的解决方案全部包含在 lodash 中。

解决这个问题的步骤是:

  1. 是映射childJSON,检查其parent的索引是否存在

  2. 将两个 json 数组合并为一个。

  3. 名称升序对它们进行排序。

将其写入代码将是:

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/

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