【发布时间】:2017-09-21 06:23:55
【问题描述】:
我有一个 JS 数组,它的每个键都包含页面的整个 HTML。我将该数组用作 back 和 forward 按钮。
有时当它包含 100 个页面的 HTML 时,浏览器的性能会下降。那么我有两个问题:
- 是否可以计算内存中 JS 数组的大小?
- 如何限制数组?我的意思是,当我推送新值时,我想删除旧数组的值。举个例子。
当前数组:
var myarr = ['val1', 'val2', 'val3']; // - it should be limited to 3 values
+------+------+------+
| val1 | val2 | val3 |
+------+------+------+
将新值压入后的预期数组:
myarr.push('val4'); // expected result:
+------+------+------+
| val2 | val3 | val4 |
+------+------+------+
这样做可能吗?
【问题讨论】:
-
使用Array.prototype.shift() 删除第一个元素。
-
使用方法 yourArrayInsertCustomMethod(item) 来管理你的数组逻辑
-
如果您知道如何使用 array.slice,您可以创建一个所需长度的新数组:
var arr2 = [...myarr.slice(-2), 'var4'] -
对于第一个问题,stackoverflow.com/q/19354808/215552 有答案,stackoverflow.com/q/1248302/215552 有如何计算对象的内存占用。只需遍历您的数组。有关数组方法的更多信息,请阅读the documentation。
-
我还应该提到,像这样将页面的整个 HTML 加载到内存中可能是个坏主意。它完全违背了浏览器缓存页面能力的目的。
标签: javascript jquery arrays performance