【问题标题】:ES6 Convert iterable to array time complexityES6 将可迭代转换为数组时间复杂度
【发布时间】:2019-05-07 05:46:07
【问题描述】:

我想知道将可迭代对象(例如 MapIterator)转换为数组的时间复杂度是多少。 假设我有这个代码:

    const Component = ({ map }) => {
           return (
        <Fragment>
            {Array.from(map.values()).map(item => <div key={item.key}>{item.name}</div>)}
       </Fragment>
     )
}

每个 Array.from() 的时间复杂度是多少,是我想的 O(n) 还是因为它的 MapIterator 以某种方式更快地从类数组转换为数组。

我的用例是我想将项目(需要访问的)保存为性能问题的映射,但我必须将它们作为数组运行。

出于这个问题的目的,我可以保存状态或使用选择器或类似的东西

你们觉得呢?

【问题讨论】:

  • 如果您关心性能,最好不要将任何内容转换为数组,只需将数据作为可迭代对象处理,将所有处理逻辑直接应用于可迭代对象。这是一个可以处理的库 - iter-ops.

标签: javascript performance ecmascript-6 time-complexity iterable


【解决方案1】:

Array.from() 是 O(n) 是正确的。如果您担心性能,您可以做的最简单的改进就是不要将值迭代两次Array.from() 已经接受 map 函数作为第二个可选参数:

Array.from(map.values(), ({ key, name }) => <div key={key}>{name}</div>)

【讨论】:

猜你喜欢
  • 2021-04-21
  • 2015-02-21
  • 2020-12-12
  • 2012-05-07
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多