gpt4 book ai didi

javascript - 无需使用 for 循环即可更快地迭代 JavaScript 数组的方法

转载 作者:行者123 更新时间:2023-12-03 03:54:01 25 4
gpt4 key购买 nike

这是我尝试解析的 JSON 数据的示例。

{
"tags": [{
"name": "SQOP_SPD",
"results": [{
},
"values": [
[1499771383876, 0, 0],
[1499771384800, 0, 0],
[1499771385885, 10, 0],
[1499771386893, 0, 0],
[1499771388867, 0, 0],
[1499771389879, 10, 0],
[1499771390878, 0, 0],
[1499771391787, 0, 0],
[1499771392870, 0, 0],
[1499771394015, 0, 0],
[1499771394955, 0, 0],
[1499771395800, 0, 0],
[1499771396882, 0, 0],
[1499771397904, 0, 0],
[1499771399906, 0, 0]
],
"attributes": {
"VId": ["9499"],
}
}],
"stats": {
"rawCount": 15
}
}
}

我使用 for 循环 迭代 values 数组,并检查是否存在特定时间戳。

var items = dataa['tags'][j]['results'][0]['values'];
for (var k = 0; k < items.length; k++) {
if (items[k] == sortedTimeStampList[i]) {
// some code
}
}

当值数组中有大约 10000000 个条目时,页面开始挂起。

是否有更快的方法来检查 values 数组中的时间戳。

最佳答案

老实说,Javascript 中最快的循环形式是 for 循环,它具有您当前拥有的缓存索引。根据您使用的浏览器和计算机上的可用资源,您的性能会有很大差异。

我相信您的应用程序存在架构缺陷。您是否需要一次全部 10000000 个条目?二进制搜索将帮助您找到所需的内容(如其他人建议的那样),但我认为可能不需要像您尝试做的那样加载和循环所有条目。

考虑在需要时延迟加载条目,而不是一次性加载所有条目。在需要时加载数据。听起来您目前遇到了内存限制,10000000 个条目需要处理的数据量很大(特别是如果您有复杂对象的数组)。

我建议研究 Service Worker,它们是为更多计算/繁重任务而设计的,这些任务在与浏览器分开的线程中运行,但它们目前还没有得到很好的支持,所以如果您'正在创建一个前端应用程序,您无法控制哪些浏览器访问它。

关于javascript - 无需使用 for 循环即可更快地迭代 JavaScript 数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033083/

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