Skip to content

Latest commit

 

History

History
37 lines (28 loc) · 957 Bytes

indexBy.md

File metadata and controls

37 lines (28 loc) · 957 Bytes
标题 标签
indexBy(基于函数将数组转换成对象) array,object(数组,对象)

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

  • 使用 Array.prototype.reduce() 从 arr 创建一个对象。
  • 将 fn 应用于 arr 的每个值以生成一个键并将键值对添加到对象中。
const indexBy = (arr, handler) =>
  arr.reduce((obj, v, i) => {
    obj[handler(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' } }

应用场景

结果如下:

<iframe src="codes/javascript/html/indexBy.html"></iframe>