高级前端
手写代码
【Q678】实现一个函数 keyBy

实现一个函数 keyBy

更多描述 类似 lodash.keyBy (opens in a new tab),这里仅仅考虑第二个参数为函数的情况

// Output: {
//   "1": {
//     "id": 1,
//     "name": "山月"
//   },
//   "2": {
//     "id": 2,
//     "name": "shanyue"
//   }
// }
keyBy(
  [
    { id: 1, name: "山月" },
    { id: 2, name: "shanyue" },
  ],
  (x) => x.id,
);

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 697 (opens in a new tab)

Author 回答者: shfshanyue (opens in a new tab)

function keyBy(list, by) {
  return list.reduce((acc, x) => {
    acc[by(x)] = x;
    return acc;
  }, {});
}

Author 回答者: Yinzhuo19970516 (opens in a new tab)

这里其实是利用对象的键都是有序的,把类数组转成了对象