基于Javascript中的节点号将平面列表数组转换为树视图数组
我想根据Javascript中的节点号将平面列表数组转换为树视图数组。节点编号表示子数组元素。e、 g.nodenumber 1.1表示元素“A”的子元素,nodenumber 1.1.1表示元素“B”的子元素,依此类推 输入 预期产量 没有等级限制 我曾尝试为每个元素设置唯一的键,并尝试进行下一步,但我被卡住了:基于Javascript中的节点号将平面列表数组转换为树视图数组,javascript,react-native,javascript-objects,Javascript,React Native,Javascript Objects,我想根据Javascript中的节点号将平面列表数组转换为树视图数组。节点编号表示子数组元素。e、 g.nodenumber 1.1表示元素“A”的子元素,nodenumber 1.1.1表示元素“B”的子元素,依此类推 输入 预期产量 没有等级限制 我曾尝试为每个元素设置唯一的键,并尝试进行下一步,但我被卡住了: var res = []; var flatList = []; input.forEach(loopContent); function loopContent(item,inde
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);
}
请帮助我这是学习可重用模块和交互递归的好机会。此答案中的此解决方案解决了您的特定问题,而无需对中编写的模块进行任何修改 在开始之前,我们必须首先提供一个针对您的问题的
父函数
const parent=(str=”“)=>
{const pos=str.lastIndexOf(“.”)
返回位置==-1
无效的
:str.substr(0,位置)
}
父项(“1.2.2”)/=>“1.2”
父项(“1.2”)/=>“1”
父项(“1”)/=>null
现在让我们建一棵树-
//Main.js
从“./tree”导入{tree}
常量输入=
[{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”}
常数结果=
树
(input//parent(node.nodeNumber)///向我们展示您尝试了什么以及在哪里遇到了问题。那么,这不是免费的代码编写吗service@charlietfl我曾尝试将每个元素的键设置为唯一,并尝试进行下一步,但我被困在了var res=[];var flatList=[];input.forEach(loopContent);函数loopContent(item,index,arr){let node=item.nodeNumber.split('.').join('.');item['flat_id']=node;res[node]=item;flatList.push(node);}编辑问题,将格式化代码包括在内,并对问题的原因进行更详细的解释
{
"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);
}
// Tree.js
import { index } from './Index'
const empty =
{}
function tree (all, indexer, maker, root = null)
{ const cache =
index(all, indexer)
const many = (all = []) =>
all.map(x => one(x))
// zero knowledge of forum object shape
const one = (single) =>
maker(single, next => many(cache.get(next)))
return many(cache.get(root))
}
export { empty, tree } // <-- public interface