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>)
我想知道将可迭代对象(例如 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>)