ES6将可迭代转换为数组时间复杂度

时间:2018-12-05 15:48:45

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

我想知道将可迭代对象(例如MapIterator)转换为数组的时间复杂度如何? 可以说我有以下代码:

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

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

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

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

你们怎么看?

1 个答案:

答案 0 :(得分:1)

您正确的认为Array.from()是O(n)。如果您担心性能,则可以提高的最简单的方法是不对值进行两次迭代Array.from()已经接受map函数作为第二个可选参数:

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