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