基于函数索引数组

使用函数将数组的每个值映射到一个键,从而创建一个对象。

  • 使用Array.prototype.reduce()arr创建一个对象。
  • arr的每个值应用fn以生成一个键,并将键值对添加到对象中。
const indexBy = (arr, fn) =>
  arr.reduce((obj, v, i) => {
    obj[fn(v, i, arr)] = v;
    return obj;
  }, {});

indexBy([
  { id: 10, name: 'apple' },
  { id: 20, name: 'orange' }
], x => x.id);
// { '10': { id: 10, name: 'apple' }, '20': { id: 20, name: 'orange' } }