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

ES6 Convert iterable to array time complexity

我想知道将可迭代对象(例如 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 以某种方式更快地从类数组转换为数组。

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

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

大家怎么看?

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

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