首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化JS中的for循环(push inside)

优化JS中的for循环(push inside)
EN

Stack Overflow用户
提问于 2015-06-03 06:22:15
回答 2查看 92关注 0票数 0

我有以下循环。长度约为1500点。但是这个代码片段可能会在页面加载时被多次调用(6-7)。

代码语言:javascript
复制
buffer[xname] = [xname];
buffer[yname] = [yname];
for (var i = 0; i < rawdata.length; i++) {
    buffer[xname].push( rawdata[i][0] );
    buffer[yname].push( rawdata[i][1] );
}

我需要在浏览器中执行此操作(它用于在绘制数据之前对数据进行条件调整)。

目前,这使得浏览器变得非常慢。

我尝试使用setTimeout()来简化事件循环。这是可行的,但只需要几秒钟。

有什么方法可以让这个循环更快吗?也许是某种映射?

EN

回答 2

Stack Overflow用户

发布于 2015-06-03 06:44:20

您可以通过执行以下操作将循环减少到一半:

代码语言:javascript
复制
buffer[xname] = [xname];
buffer[yname] = [yname];

var dataLength = rawdata.length;

for (var i = 0; i < dataLength / 2; i++) {
    buffer[xname][i] = rawdata[i][0];
    buffer[yname][i] = rawdata[i][1];

    buffer[xname][dataLength - i -1] = rawdata[dataLength - i -1][0];
    buffer[yname][dataLength - i -1] = rawdata[dataLength - i -1][1];
}

不确定使用推式或直接赋值之间的更改是否会产生足够的影响,从而使执行时间相同。

票数 1
EN

Stack Overflow用户

发布于 2015-06-03 06:28:16

感谢@royhowie

Why is array.push sometimes faster than array[n] = value?

如果您可以控制原始数据的来源,那么您可能需要考虑更改它,这样就可以在不进行额外处理的情况下使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30607637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档