处理数据 根据 pid 添加到父级 children

javascript 复制代码
let data = [
  { id: 1, name: "123", pid: 1 },
  { id: 2, name: "123", pid: 1 },
  { id: 3, name: "123", pid: 1 },
  { id: 4, name: "123", pid: 2 },
  { id: 5, name: "123", pid: 1 },
  { id: 6, name: "123", pid: 2 },
  { id: 7, name: "123", pid: 1 },
  { id: 8, name: "123", pid: 2 },
  { id: 9, name: "123", pid: 1 },
]
let result = [];  // 存储最终结果的数组

data.forEach(item => {
  // 获取到元素父级
  let parent = data.find(element => element.id === item.pid);

  let index = result.findIndex(i => i.id === parent.id);
  // 不存在就将父级 添加 进 result数组中
  if (index === -1) {
    result.push(parent);
  }

  // 判断当前元素是否和父级一致,一致就没必要再次添加
  if(item.id != parent.id){
    if (!parent.children) {
      parent.children = [];
    }
    parent.children.push(item);
  }
});

console.log(result);
相关推荐
每天学习一丢丢2 分钟前
Spring Boot + Vue 项目用宝塔面板部署指南
vue.js·spring boot·后端
惊悚的毛毛虫4 分钟前
掘金免广告?不想看理财交流圈?不想看exp+8?
前端
springfe010110 分钟前
vue3组件 - 大文件上传
前端·vue.js
再学一点就睡18 分钟前
Vite 工作原理(简易版)—— 从代码看核心逻辑
前端·vite
NeilNiu29 分钟前
开源AI工具Midscene.js
javascript·人工智能·开源
好好好明天会更好35 分钟前
uniapp项目中小程序的生命周期
前端·vue.js
CF14年老兵1 小时前
「Vue 3 + View Transition 实现炫酷圆形缩放换肤动画」
前端·css·trae
Warren981 小时前
软件测试-Selenium学习笔记
java·javascript·笔记·学习·selenium·测试工具·安全
小璞1 小时前
05_CursorRules_代码审查篇_Rule_code-review
前端