美文网首页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: []
  }
]

相关文章

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

    原来的数据格式为: 定义一个过滤函数: 让我们来分析过滤函数里: Object.assign的作用是去把paren...

  • mybatis缓存设计思想

    MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存: 一级缓存是Session会话级别的缓存,位于表示...

  • Mybatis原理--缓存机制(一级缓存)

    MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:一级缓存是Session会话级别的缓存:表示一次数...

  • MyBatis之缓存机制

    1、概述 MyBatis将数据缓存设计成两级结构: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话...

  • mybatis缓存

    mybatis有两级缓存 一级缓存(默认), session缓存, 基于PerpetualCache 的 Has...

  • iOS--通过assetURL获取到视频

    首先导入头文件 使用当前的URL过滤到我们想要的数据 PHAsset - 获取视频数据 Demo 建议使用《TZI...

  • Mybatis的缓存机制

    Mybatis的缓存机制 缓存的顺序:先查二级缓存再去一级缓存 默认两级缓存 一级缓存:(本地缓存) sqlSes...

  • 购物车商品选择处理

    今天我们要实现的效果是商品购物车的选择效果。 数据分为两级,第一级是店铺shop,第二级是店铺下面的商品good。...

  • Linux常用命令

    cd /home 进入/home 目录 cd .. 返回上一级目录 cd ../..返回上两级目录 pwd ...

  • STL剖析

    1, allocator 两级配置方法,128bytes为边界,第一级:malloc/free or new/de...

网友评论

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

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