鱼塘码农

菜鸟学习记录
鱼海无涯

转化数组为树形数组

/**
 * 转化数组数据为树形数据
 * @param {Array} flatData 数据数据
 * @param {Object} option 参数
 * @param {String} option.childrenName 子级字段名称
 * @param {String} option.idName ID字段名称
 * @param {String} option.parentIdName 父级ID字段名称
 */
export function treeArray(
  flatData,
  {
    childrenName = 'children',
    idName = 'id',
    parentIdName = 'parentId',
  } = {},
) {
  // 循环所有项
  // console.log('在这里开始循环');
  return flatData.filter(father => {
    // 计算每一项的子级数组
    const children = flatData.filter(child => {
      // console.log('father[idName]', father[idName]);
      // console.log('child[parentIdName]', child[parentIdName]);
      // console.log('father[idName]', father[idName]);
      return (
        father[idName] &&
        child[parentIdName] &&
        father[idName] === child[parentIdName]
      );
    });
    // 如果存在子级,则给父级添加一个children属性,并赋值
    if (children && children.length) {
      // console.log('存在自己');
      father[childrenName] = children;
      // console.log('father[childrenName]', father[childrenName]);
      // console.log('father', father);
    }
    // 返回第一层
    console.log('flatData---------------', flatData);

    return father[parentIdName] === 0;
  });
}
文章内容可能来自网络,纯为学习使用,若有侵权,请联系我删除 | 当前页面:鱼塘码农 » 转化数组为树形数组

评论