JavaScript集合(Array)转树(tree)结构

位置:首页>文章>详情   分类: 教程分享 > WEB基础   阅读(881)   2024-04-17 12:33:20
JavaScript集合(Array)转树(tree)结构

js 原生数组转树形结构
 
/**

 * 将list装换成tree
 * @param {Object} myId 数据主键id
 * @param {Object} pId  数据关联的父级id
 * @param {Object} children 子节点的节点名称
 * @param {Object} paramList list数据集合
 */
function listToTree(myId, pId,children, paramList) {
  function recursion(id,pId,all,item){
    let childrenList=all.filter(ele=>ele[pId] === item[id]);
    if (childrenList&&childrenList.length>0){
      childrenList.forEach(function(f){
        recursion(id,pId,all,f);
      })
      let myChildrenList = item[children];
      if (myChildrenList === undefined){
          myChildrenList=[];
      }
      childrenList.forEach(o=>myChildrenList.push(o));
      item[children]=myChildrenList;
    }
  }

  if (!paramList||paramList.length===0){
    return [];
  }
  let list = JSON.parse(JSON.stringify(paramList));
  let parentList=list.filter(ele=>ele[pId] === null||ele[pId] === undefined);
  if (!parentList){
    return [];
  }
  parentList.forEach(function(it){
    recursion(myId,pId,list,it);
  })
  return  parentList;
}

调用:
	function dealData(){
		let treeData=listToTree('id','pid','subList',listData);
		console.log(treeData);
	}

执行结果:
执行结果
地址:https://www.leftso.com/article/1050.html

相关阅读

JavaScript集合(Array)转树(tree)结构js 原生数组转树形结构 /** * 将list装换成tree * @param {Object} myId 数据主键id * ...
这里讲解的是一种通过扩展原生JS的方式进行日期格式化​首先,在需要使用的地方添加以下代码Date.prototype.format = function(fmt) { var o ...
javascript(js)onclick 传递多个字符变量参数<a title="点击下载附件" onclick="downloadFile(\''+row.url+'\',\''+ro...
现有js数组数据如下:let dataArray=[{id:1,name:'张三'},{id:2,name:'李四'}];根据id获取js数组的对象let findId=1; let findO...
js 生成二维码引入qrcode.js该框架基于HTML5原生编写,兼容性较好。支持H5 vue uniapp 微信小程序等。基本使用参考<div id="qrcode"&gtl;<...
清空input 类型为file的文件选择常见的方法分两类一. javascript 方式清空file选择首先获取dom元素filevar file=document.getElementById...
Ajax Post 下载文件通过原生js实现function ajaxPostDownload(url,fileName,callback) { let xhr = new XMLHt...
类库方式实现:<!DOCTYPE html&gtl; <html lang="en"&gtl; <head&gtl; <meta charset="UTF-8"...
Bootstrap Tab基础使用,首先是引入必要的css和js,这里暂时忽略核心代码:<ul class="nav nav-tabs"&gtl; ...
在ckeditor4的时候绑定blur事件代码如下:window.editor.on('blur',function(){//这里写你想做的事儿})同样的代码搬到ckeditor5不仅不能用,还...