gpt4 book ai didi

javascript - 删除项目时多次遍历数组的最快方法

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:34 24 4
gpt4 key购买 nike

假设我有一个数字数组,如下所示:

var myArray = [1, 2, 3, 4, 5];

这是一个简化,我的实际案例场景要大得多(60K 或更多项目)。

基本上我需要完全遍历数组以处理一些数字,然后继续完全遍历数组直到处理完所有数字(假设我可以在第一次迭代中处理 1 和 3,然后 2, 4 和 5 在第二个)。 编辑:它们不必按顺序排列。

我想知道的是 - 我需要这样做,以便不会再次考虑在以前的迭代中处理过的项目

我的问题是:最快的方法是什么,每一毫秒都很重要,因为这是大规模进行的。

我已经尝试删除通过 myArray = myArray.splice(i, 1) 处理过的项目,但这非常慢。我还尝试将已处理的项目设置为 null,然后在后续迭代中忽略 null 项目。该方法似乎工作得更快,但仍需要一两秒钟。有没有更快的方法?

最佳答案

您可以简单地存储您在上一次处理运行中获得的索引。毕竟,您不想多次迭代数组,您只想迭代一次但分多个步骤。

function process(arr, step, start) {
var take = Math.min(arr.length - start, Math.round(1 + Math.random() * 3));
for (var i = start; i < start + take; i++) {
console.log("processing item " + arr[i] + " in step " + step);
}
return take;
}

var arr = [1, 2, 3, 4, 5]
for (var step = 0, i = 0; i < arr.length; step++)
i += process(arr, step, i);

关于javascript - 删除项目时多次遍历数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034658/

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