转载学习, json filter ,json怎么用js过滤

436 阅读1分钟
  1. 原文地址:https://segmentfault.com/q/1010000010795415
  2. 过滤type为1的数据,按原来的层次排列
  3. 把type为0的全过滤出来按原来的数据排列

{
    name: '全部文件',
    children: [
        {name: 'hello',
         type: 0,
         children: []
        },
        {name: 'wat',
          type: 1
        },
        {
            name: 'child1',
            type: 0,
            children: [
                {
                    name: 'child11',
                    type: 0,
                    children: [
                        {name: 'hello',
                        type: 1,
                        },
                        {name: 'wat',
                        type: 1,
                        }
                    ]
                },
                {
                    name: 'child12',
                    type: 0,
                    children: [
                        {name: 'hello'
                        type: 0,
                        childen: []
                        },
                        {name: 'wat'
                        type: 1,
                        }
                    ]
                }
            ]
        }
    ]
}

function getDataByType(type, data) {
  if (!data || data.type !== type) {
    return null;
  }

  if (data.type === type) {
    if (!Array.isArray(data.children)) {
      return data;
    } else {
      const children = data.children
        .map(ele => {
          return getDataByType(type, ele);
        })
        .filter(ele => ele !== null);

      return {
        type: data.type,
        name: data.name,
        children
      };
    }
  } else {
    return null;
  }