美文网首页
一个带有重复对象的数组生成一个树形结构的数组

一个带有重复对象的数组生成一个树形结构的数组

作者: 蜗牛Coming | 来源:发表于2019-08-23 19:13 被阅读0次
面试题摘抄记录

如何将 [{id: 1}, {id: 2, pId: 1}, ...] 的重复数组(有重复数据)转成树形结构的数组 [{id: 1, child: [{id: 2, pId: 1}]}, ...] (需要去重)

const fn = arr => {
          const res = []
          const map = arr.reduce((res, item) => ((res[item.id] = item), res), {});
          for (const item of Object.values(map)) {
            if (!item.pId) {
              res.push(item)
            } else {
              const parent = map[item.pId]
              parent.child = parent.child || []
              parent.child.push(item)
            }
          }
        return res
}
// Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
// reduce  arr.reduce(callback,[initialValue])
callback(total, currentValue, currentIndex, arr)
    total   必需。初始值, 或者上一次调用回调返回的值。
    currentValue    必需。当前元素
    currentIndex    可选。当前元素的索引
    arr 可选。当前元素所属的数组对象。
initialValue (可选。传递给函数的初始值,作为第一次调用 callback 的第一个参数)
const map = arr.reduce((res, item) => ((res[item.id] = item), res), {});
//相当于
var map;
var res = {};
arr.foreach(function(item,index){
    res[item.id] = item;
})
map = res;

相关文章

  • js 数组与树形结构对象相互转换

    数组 树形结构对象 数组转成树形结构 树形结构转成数组

  • 一个带有重复对象的数组生成一个树形结构的数组

    面试题摘抄记录 如何将 [{id: 1}, {id: 2, pId: 1}, ...] 的重复数组(有重复数据)转...

  • 树形转换

    如何将 [ {id: 1}, {id:2, pid:1}...] 的重复数组(有重复数据) 转成树形结构的数组[ ...

  • js数组平铺和树形结构的转换

    将一个平铺的数据转换成一个树形的数据结构 将树形结构的数组转换成平铺的数组

  • 平级数据转换为树形结构

    /** *该方法用于将有父子关系的数组转换成树形结构的数组 *接收一个具有父子关系的数组作为参数 *返回一个树形结...

  • 工具函数

    数组 普通一维数组 转 树形结构数据 树形结构数据 转 一维数组 uint8Array转String String...

  • reduce处理树形结构数据

    直接上代码 1.0:将树形结构处理为扁平数组 2.0:将扁平数组处理为树形结构

  • 一维数组转树形结构

    在JavaScript中如何将有父子关系的一维数组转换成树形结构:1:首先创建一个有父子结构关系的数组 2:将数组...

  • es6 Set

    ES6提供了数据结构Set。类似于数组,但是没有重复值。 Set本身是一个构造函数,用来生成Set数据结构 数组的...

  • JS 函数封装

    返回数组或对象的长度 返回数组中的非假值组成一个新数组 返回数组中任意一个元素 数组去重复

网友评论

      本文标题:一个带有重复对象的数组生成一个树形结构的数组

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