JS把array数组转为树形结构 数据必须包含id和parentId,代码示例的数据id为functionId,可以根据需要替换数据id和parentId的命名。 functionSort数据定义的排序字段,分别对子节点、根节点排序,不需要可以去掉sort相关代码 // 列表转为树 const arrayToTreeLoop = (nodes) => { const map = {} const tree = [] ...
log(JSON.stringify(tree, null, 2)); 解释 函数定义:arrayToTree函数接收一个数组arr和三个可选参数parentIdKey、idKey、childrenKey,分别用于指定父节点ID的键名、ID的键名和子节点的键名。 创建空对象:map对象用于存储树结构,键为节点的ID,值为节点对象。 遍历数组:使用forEach遍历数组,对于每个元素,将其...
let arr= this.arrayToTree(res.data.data, 0); //树转数组方法 this.arrayToTree(res.data.data, 0) arrayToTree(list, parentId = null) { const arr = [] list.forEach(item => { if (item.parentId === parentId) { // 找到了匹配的节点 // 当前节点的id 和 当前节点的子节点的pid是...
js Array to Tree source = [{ id: 1, pid: 0, name: 'body' }, { id: 2, pid: 1, name: 'title' }, { id: 3, pid: 2, name: 'div' }] 转换为: [{ id: 1, pid: 0, name: 'body', children: [{ id: 2, pid: 1, name: 'title', children: [{ id: 3, pid: 1, ...
* @param {Array} data - 输入的一维数组 * @return {Array} 树结构数组 */ function arrayToTree(data) { // 创建一个id映射,用来快速查找元素 const idMap = {}; // 遍历数组,初始化每个元素的children字段,并将其存入idMap data.forEach(item => { ...
JS从扁平array转tree 有时我们需要从扁平的数组结构(flat array),根据id,和pid构建出树形数组结构(tree array),这种情形经常出现在嵌套的目录结构,如下图: 或者企业的部门架构,也会出现上面的类似结构。 类似上面的情景,假如我们有以下的数据: let entries = [{...
array.push(obj) 在写代码之前,需要知道,当我们使用[].push添加一个对象时,实际上是将对象的指针加入到数组。数组和对象指向同一块内存区域,修改原对象的同时也会修改数组。 constarr=[]constobj={a:1,b:2}arr.push(obj)obj['a']=111console.log(arr)// [{a: 111, b: 2}]console.log(obj)// {...
parentId 为根节点 idfunctionarrayToTree(arr,parentId){// 将所有对象存到 map 中constmap=arr.reduce((prev,cur)=>{// 注意:这里是浅拷贝,会修改原数组,当后续再使用原数组会出问题prev[cur.id]=cur;returnprev;},{});// 定义返回结果数组letresult=[];// 遍历传入的对象for(leti=0;i<arr....
functionrecursiveToTree(data){functionloop(key){constarr=[];data.forEach((item)=>{if(item.parentId===key){item.children=loop(item.id);arr.push(item);}});returnres;}returnloop(1);} 看看性能,诶?看起来竟然递归性能最佳🤔 js将列表组装成树结构的两种方式 ...
current.children=arrayToTree(arr, current['id']);returnres.concat(current); }returnres; }, []); };console.log(arrayToTree(list,0)) 方法二:hash表 + 引用关系.传入数组,根节点id ,返回一个树结构对象 constarrayToTree = (arr, rootId) => {constmap= {};for(constiterator of arr) {map...