如何 将扁平数组转为树形数组 将树形数组拉平为偏平数组

将以上扁平数组转为树形数组

	// 查找一级分类
		let cate_1st = data.filter((item) => item.pId == 0);
		// 递归
		function convert(arr, origin) {
			return arr.map((parent) => {
				let children = origin.filter((child) => parent.id === child.pId);
				if (children.length) {
					return { ...parent, children: convert(children, origin) };
				} else {
					return { ...parent };
				}
			});
		}

		let treeData = convert(cate_1st, data);

将树形数组拉平为扁平数组 


function flat(arr){
  var newArr=[];//申请新数组
    for(var i=0;i<arr.length;i++){
      if(arr<i>.childrens){//childrens存在
            newArr.push(...flat(arr[i].childrens));
             //递归,调用flat方法,并将返回结果push到新数组        
            delete arr[i].childrens;//删除原有的childrens属性
        }
        newArr.push({...arr[i]});//三个点,展开对象,push新对象  
    }  
    return newArr;//返回数组
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值