javascript - 使用 lodash 创建父子关系
问题描述
根据索引值组合 parent 和 chid JSON 数组,并向其添加另一个找到的属性。
数据:比较字段:parentJSON - 索引 childJSON - parent_index
输出: - 父级 - 及其子级 - 父级 - 及其子级
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
,检查其父索引是否存在将两个 json 数组合并为一个。
按升序对它们进行
name
排序。
用代码写这个将是:
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>
推荐阅读
- excel - 使用 CUBERANKEDMEMBER 显示排名列表的多个条件
- azure-devops - Azure 管道:不要为了运行测试而再次构建
- c++ - 如何从链接的目标文件中读取 .rodata?
- python - 无法在python2中加载逻辑回归模型
- c++ - 为什么我的全局变量(在 dll 和 exe 之间共享)没有改变?
- java - Thymeleaf + spring,如何从本地磁盘显示图像
- spring-boot - Spring 内容协商 - 一种 mime 类型来扩展另一种
- database - 导入时,找到并替换重复的,或者如果没有重复,粘贴在数据集的底部
- r - 按位置将值转换为缺失
- excel - 获取工作表作为集合 excel vba