递归,将扁平数据进行嵌套处理,正则

递归修改键名

let list = [{
        ids: 1,
        name: '蔬菜',
        children: []
    },
    {
        ids: 2,
        name: '水果',
        children: [{
            ids: 22,
            name: '香蕉',
            children: []
        }]
    }
]

 修改键名的逻辑

function parseJson(arr) {
    var arr = arr.slice()
    function toParse(arr) {
        arr.forEach((item) => {
            console.log(item,222);
            item.label = item.name
            item.id = item.ids
            delete item.name
            delete item.ids
            if (item.children.length > 0 && Array.isArray(item.children)) {
                item['childrens'] = item.children
                toParse(item['childrens'])// 这个时候传入的是childrens 而不是children
            }
            delete item.children
        })
        console.log(arr,1111);
        return arr
    }
    return toParse(arr)
}

输出内容 

{ ids: 1, name: '蔬菜', children: [] } 222
{
  ids: 2,
  name: '水果',
  children: [ { ids: 22, name: '香蕉', children: [] } ]
} 222
{ ids: 22, name: '香蕉', children: [] } 222
[ { label: '香蕉', id: 22 } ] 1111 // 注意这里 是香蕉 
[
  { label: '蔬菜', id: 1 },
  { label: '水果', id: 2, childrens: [ [Object] ] }
] 1111

正则修改键名 

let list = [{
	ids: 1,
		name: '蔬菜',
		children: []
	},
	{
		ids: 2,
		name: '水果',
		children: [{
			ids: 22,
			name: '香蕉',
			children: []
		}]
	}
]

let stlist = JSON.stringify(list);
stlist = stlist.replace(/\"ids"/g, '"id"');
stlist = stlist.replace(/\"name"/g, '"label"');
stlist = stlist.replace(new RegExp(/(,"children":\[\])/g), '');
console.log(JSON.parse(stlist));

 将扁平数据进行嵌套处理

const list = [
  {id:1,name:'一级 1',pid:0},
  {id:2,name:'二级 1-1',pid:1},
  {id:3,name:'二级 1-2',pid:1},
  {id:4,name:'三级 1-1-1',pid:2},
  {id:5,name:'一级 2',pid:0},
] 

function listToTree(list){
  return list.filter(e => {
    let pid = e.pid;
    let newArr = list.filter(ele => {
      if(ele.id == pid){
        if(!ele.children){
          ele.children = [];
        }
        ele.children.push(e);
        return true
      }
    });
    return newArr.length===0
  });
}
listToTree(list);

原作者在这:将扁平化数据转为嵌套式数据

以上均为网上转载 ,有的原创链接找不到了。

因为不选原创过于麻烦,本人就厚颜选择原创了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值