Array.prototype.groupBy = function(callback) {
  const object = {};
  for(let i =0; i < this.length; i++) {
      let key = callback(this[i],i,this);
      if(object[key]) {
          object[key].push(this[i])
      } else {
          object[key] = [this[i]]
      }
  }
  return object;
}

const arr = [
  { id: 1, name: "水果", pid: 0 },
  { id: 2, name: "香蕉", pid: 1 },
  { id: 3, name: "苹果", pid: 1 },
  { id: 4, name: "蔬菜", pid: 0 },
  { id: 5, name: "白菜", pid: 4 },
  { id: 6, name: "萝卜", pid: 4 },
  { id: 7, name: "胡萝卜", pid: 6 },
  { id: 8, name: "白萝卜", pid: 6 },
]

const groupArr = arr.groupBy(item => item.pid)
arr.forEach(item => item.children = groupArr[item.id])
console.log(groupArr[0]);

js数组新特性

js工具函数

最后修改:2022 年 02 月 04 日 07 : 54 PM
如果觉得我的文章对你有用,请随意赞赏