shfshanyue / Daily-Question

互联网大厂内推及大厂面经整理,并且每天一道面试题推送。每天五分钟,半年大厂中
https://q.shanyue.tech
4.92k stars 508 forks source link

【Q678】实现一个函数 keyBy #697

Open shfshanyue opened 3 years ago

shfshanyue commented 3 years ago

类似 lodash.keyBy,这里仅仅考虑第二个参数为函数的情况

// Output: {
//   "1": {
//     "id": 1,
//     "name": "山月"
//   },
//   "2": {
//     "id": 2,
//     "name": "shanyue"
//   }
// }
keyBy([{ id: 1, name: '山月' }, { id: 2, name: 'shanyue' }], x => x.id)
shfshanyue commented 3 years ago
function keyBy (list, by) {
  return list.reduce((acc, x) => {
    acc[by(x)] = x 
    return acc 
  }, {})
}
Yinzhuo19970516 commented 1 year ago

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