编辑代码

const list =  [
   { id: 1, pid: null, name: 'M1部门' },
   { id: 12, pid: 1, name: '李四' },
   { id: 13, pid: 1, name: '王五' },
   { id: 2, pid: null, name: 'M2部门' },
   { id: 21, pid: 1, name: '赵六' },
   { id: 22, pid: 1, name: '周七' },
   { id: 23, pid: 2, name: '吴八' },
   { id: 11, pid: 1, name: '张三' },
   {id:6, pid: 11, name: '钱多多'}
 ]

function transformTree(
  list = [],
  options = {
    keyField: 'id',
    childField: 'children',
    parentField: 'pid',
  },
) {
  const { keyField, childField, parentField } = options;

  const tree = [];
  const record = {};

  for (let i = 0, len = list.length; i < len; i++) {
    const item = list[i];
    const id = item[keyField];

    if (!id) {
      continue;
    }

    if (record[id]) {
      item[childField] = record[id];
    } else {
      item[childField] = record[id] = [];
    }

    if (item[parentField]) {
      const parentId = item[parentField];

      if (!record[parentId]) {
        record[parentId] = [];
      }

      record[parentId].push(item);
    } else {
      tree.push(item);
    }
  }

  return tree;
}

console.log(transformTree(list))