美文网首页JavaScript
将同一级过滤到两级的数据

将同一级过滤到两级的数据

作者: Lia代码猪崽 | 来源:发表于2018-07-30 11:36 被阅读3次

    原来的数据格式为:

    const tree = [
      {
          id: '111111',
          name: 'parent1',
          parentId: null
      },
      {
          id: '222222',
          name: 'parent2',
          parentId: null
      },
      {
          id: '333333',
          name: 'children1',
          parentId: '111111'
      }
    ]
    

    定义一个过滤函数:

    function filter(arr) {
      const parents = arr.filter(item => item.parentId === null)
      const newArray = parents.map((item, index) => Object.assign(item, {
        children: arr.filter(s => s.parentId === item.id)
      }))
      return newArray
    }
    

    让我们来分析过滤函数里:

    // parent 应该为:
    [
      {
        id: '111111',
        name: 'parent1',
        parentId: null
      },
      {
        id: '222222',
        name: 'parent2',
        parentId: null
      }
    ]
    

    Object.assign的作用是去把parentId加入到id相等的父元素的children属性里,否则应为空数组。
    map则为遍历这个数组,每一个元素都会运行这个方法。
    所以结果为:

    console.log(filter(tree))
    //
    [
      {
        id: '111111',
        name: 'parent1',
        parentId: null,
        children: [
          {
            id: '222222',
            name: 'parent2',
            parentId: null
          }
        ]
      },
      {
        id: '222222',
        name: 'parent2',
        parentId: null,
        children: []
      }
    ]
    

    相关文章

      网友评论

        本文标题:将同一级过滤到两级的数据

        本文链接:https://www.haomeiwen.com/subject/ceoxvftx.html