我怎样才能让我的 Javascript .map 函数更有效率?

How can I make my Javascript .map functions more efficient?

我目前正在将大量数据从 AWS OpenSearch 返回到一个名为 eventList 的数组中。数组中的每个事件都具有以下结构:

{
  _source: {
    "key": value
    "key": value
    "key": value
  }
}

因此我想对其进行解构,以便 _source 成为事件数据,然后映射到 eventList 上。目前,我有两个 .map 实例,我知道这不是那么有效,所以我想知道如何组合它们。

let eventList = [
  {
    _source: {
      tags: "xxx,yyy,zzz"
      ...
    }
  }
];

eventList = eventList.map((event) => event._source);
eventList = eventList.map((event) => {
  const { tags } = event;

  return {
    ...event,
    tags: tags?.split(",") ?? [],
  };
});

正如您在问题中所说,您可以将这两个 map 调用结合起来:

eventList = eventList.map(({_source}) => (
    ..._source,
    tags: _source.tags?.split(",") ?? [],
));

我在参数列表中使用了解构,但如果你不想的话,你不必这样做:

eventList = eventList.map((event) => (
    ...event._source,
    tags: event._source.tags?.split(",") ?? [],
));

有一百种不同的写法,但你明白了。

实际上,我们可以进一步解构:

eventList = eventList.map(({_source: {tags, ...rest}}) => (
    ...rest,
    tags: tags?.split(",") ?? [],
));

但所有这些变体在性能方面应该大致相同;最大的胜利是只有一个 map.