【发布时间】:2020-07-18 11:14:18
【问题描述】:
我想根据 Javascript 中的节点号将平面列表数组转换为树视图数组。节点号代表子数组元素。例如nodenumber 1.1 表示元素“A”的子元素,nodenumber 1.1.1 表示元素“B”的子元素,依此类推。
输入
[ { "name": "A", "nodeNumber": "1" }, { "name": "B", "nodeNumber": "1.1" }, { "name": "C", "nodeNumber": "1.1.1" }, { "name": "D", "nodeNumber": "1.2" }, { "name": "E", "nodeNumber": "1.2.1" }, { "name": "F", "nodeNumber": "1.2.2" } ]
预期输出
{ "name": "A", "nodeNumber": "1", "children" :[ { "name": "B", "nodeNumber": "1.1", "children" :[ { "name": "C", "nodeNumber": "1.1.1" } ] }, { "name": "D", "nodeNumber": "1.2", "children" :[ { "name": "E", "nodeNumber": "1.2.1" }, { "name": "F", "nodeNumber": "1.2.2" } ] } ] }
没有等级限制。
我尝试为每个元素设置唯一键并尝试进行下一步,但我被困在那里:
var res = [];
var flatList = [];
input.forEach(loopContent);
function loopContent(item,index,arr) {
let node = item.nodeNumber.split('.').join('_');
item['flat_id'] = node;
res[node] = item; flatList.push(node);
}
请帮帮我
【问题讨论】:
-
向我们展示您的尝试以及您遇到问题的地方。 SO 不是免费的代码编写服务
-
@charlietfl 我试图让每个元素的键都是唯一的,并试图进行下一步,但我被困在那里 var res = []; var flatList = []; input.forEach(loopContent); function loopContent(item,index,arr) { let node = item.nodeNumber.split('.').join('_');项目['flat_id'] = 节点;资源[节点] = 项目; flatList.push(节点); }
-
编辑问题以包含格式化代码以及更详细的问题说明
标签: javascript react-native javascript-objects