ES6地图迭代成本

VB_*_*VB_ 0 javascript dictionary ecmascript-6

我有一系列的项目:var treeItems = [];.treeItems.length可能是5-30(也许是50),但每个treeItem都是相当大的对象.我应该做两件事:迭代项目并按ID获取项目.

我正在考虑用es6替换数组Map.并迭代地图使用:Array.from(treeItemsMap.values())操作.

问题:操作的成本(时间/内存)是Array.from(map.values())多少?

PS我正在为移动设备做SPA,因此内存使用也很重要.

Ori*_*iol 6

规范说:

必须使用散列表或其他机制来实现Map对象,这些机制平均提供对集合中元素数量的次线性访问时间.

具体成本取决于实现.

使用Array.from将只是将数据复制到一个数组中,这会无用地浪费内存.更好地迭代地图.

注意50项是非常小的数据.我认为地图中的巨大物体并不重要.记住JS是一种按值传递的语言,但是对于对象,该值是一个引用.因此,地图将只包含50个对象的引用,这些引用将单独存储.迭代或访问那个小地图不应该花费太多.