【发布时间】:2020-07-28 03:48:54
【问题描述】:
通常我转换我的数据数组的方式可以让我稍后在代码中更快地访问元素,假设元素是具有 ID 属性的对象,然后我将此属性设置为数组中元素的键。举个例子,假设我有这个:
[{id: 1, name: "a"}, {id: 2, name: "b"}, etc..]
变成
[1 => {name: "a"}, 2 => {name: "b"}, etc...]
然后我可以简单地使用a[2] 而无需遍历数组来查找带有ID = 2 的元素
问题是某些值可能会丢失,从而导致数组中的元素为空:
1599,
<2 empty items>,
1105,
892,
<2 empty items>,
86,
1695,
999,
<1 empty item>,
967,
1663,
<3 empty items>,
1673,
<4 empty items>,
1043,
998,
1350,
1688,
<3 empty items>,
2013,
<2 empty items>,
136,
1463,
1632,
<1 empty item>,
1827,
1680,
1293,
<2 empty items>,
844,
1696,
1108,
<1 empty item>,
925,
<6 empty items>,
1144,
<7 empty items>,
905,
<3 empty items>,
2006,
<7 empty items>,
1876,
<2 empty items>,
1609,
<2 empty items>,
2232,
<1 empty item>,
1561,
<1 empty item>,
2203,
<1 empty item>,
1400,
<3 empty items>,
1381,
1287,
1312,
<2 empty items>,
933,
... 4011 more items ]
这些是否使用内存,我应该担心吗?
【问题讨论】:
-
他们没有。稀疏数组不是一个连续的内存区域——它只是一个花哨的对象。如果您有
{a: 1, c:3},则没有为b保留内存。与(基本上){0: "a", 2: "c"}相同
标签: javascript arrays memory