gpt4 book ai didi

javascript - 循环遍历缺少索引的数组的最快方法

转载 作者:行者123 更新时间:2023-12-02 17:20:44 24 4
gpt4 key购买 nike

我有一个数组数组,用于在屏幕上绘制图 block map (基本上是一个列数组,每列都是一个图 block 数组)。我尝试通过不设置包含空图 block 的数组索引来加快绘制过程,但它并没有更快。

var a1 = [];
a1[0] = 1;
a1[100] = 1;
a1[200] = 1;
a1[300] = 1;

var a2 = [];
for( var i = 0; i <= 300; i++ ) {
a2[i] = 1;
}

当我比较这两个 100,000 次循环所需的时间时,a2 稍快一些。当我尝试使用 ( for var x in y ) 来代替数组和对象时,速度慢了 4 - 12 倍。

如果循环遍历一个对象要慢很多,并且删除 99% 的数组(不仅仅是从末尾)并不能使其更快,那么有什么方法可以真正使其更快吗?

最佳答案

数组中不要有空洞,只需完全填充即可(也可以预先分配以避免动态调整大小)

var a1 = new Array(301);
for (var i = 0; i < a1.length; ++i) a1[i] = 0;
a1[0] = 1;
a1[100] = 1;
a1[200] = 1;
a1[300] = 1;

正常循环(切勿使用 for.in,如果需要迭代键,请使用 Object.keys):

for (var i = 0; i < a1.length; ++i) {
if (a1[i] !== 0) {
//Non empty
}
}

关于javascript - 循环遍历缺少索引的数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com