【发布时间】:2015-09-22 15:23:54
【问题描述】:
我有一系列项目:var treeItems = [];。 treeItems.length 可能是 5-30(可能是 50),但每个 treeItem 都是相当大的对象。我应该两者都做:遍历项目并通过 id 获取项目。
我正在考虑用 es6 Map 替换数组。并遍历地图使用:Array.from(treeItemsMap.values()) 操作。
问题:Array.from(map.values()) 操作的成本(时间/内存)是多少?
附:我正在为移动设备做 SPA,因此内存使用量也很重要。
【问题讨论】:
-
相当广泛的问题,但我不会使用
Array.from进行迭代,因为您每次都会创建一个新数组 -for..of可能更合适。您的 ID 是非连续的还是只是索引? -
为什么不只是像这样的数据结构 { tree_item_id : tree_item, ... }; O(1)
-
@elio.d 是的,这正是我想做的事
-
@RGraham 我的地图看起来像` { tree_item_id : tree_item, ... }`
-
你可能会觉得这个jsPerf很有趣
标签: javascript dictionary ecmascript-6