首页 > 解决方案 > 这些 ArrayToMap 函数用法中哪一个在性能方面更好?

问题描述

尝试映射一个数组,这些实现中哪一个在性能方面更好?有更好的解决方案吗?

//Given the following Array of people:
const people = [ { name: 'Alice', available: true },  { name: 'Bob', available: false }, { name: 'Charlie', available: true }];

const mapWithReduce = (people) => people.reduce((map, person) => ({ [person.name]: person.available, ...map }), {});

const mapWithForEach = (people) => {
    const map = {};
    people.forEach((person) => map[person.name] = person.available);
    return map;
}

我发现mapWithReduce更漂亮,但我不知道...map}是否每次迭代都在复制地图。mapWithForEach似乎更高效。

标签: javascriptperformancetime-complexity

解决方案


我喜欢这个解决方案。

const people = [ 
  { name: 'Alice', available: true },
  { name: 'Bob', available: false },
  { name: 'Charlie', available: true }
];

const peopleMap = people.reduce((map, person) => {
  map[person.name] = person;
  return map;
}, {});

console.log(peopleMap);

看起来等于 forEach 解决方案,但没有创建本地变量。

https://jsperf.com/arraymapeachreduce/9

在此处输入图像描述 在此处输入图像描述


推荐阅读