gpt4 book ai didi

Javascript 遍历 block /分组数组

转载 作者:行者123 更新时间:2023-11-30 09:45:29 32 4
gpt4 key购买 nike

我的情况是,我有一个包含数千个项目的数组,首先,我将这个数组分成每组 1000 个 block ,然后我调用一个函数来处理数组中的第一个 block ,并返回新的分组 block 。

// Using lodash
var array = []; // my array with many items
var ids = _.chunk(array, 1000); // grouped array 1000 each

function LoopArrayGroups(ids){

var arrSize = _.size(ids); // number of groups

if(arrSize != 0){
// get First group array,remove it from the list
var toBeUsed = ids[0];
ids.splice(0, 1);

//process first group
myFunction(toBeUsed, function(promise){

if(!promise.error){

// return new array with the first group removed
return ids;

}else{
console.log("Some error " + promise.error);
}

});

}
}

LoopArrayGroups 方法使用分组 block 数组调用,然后它处理第一个 block ,删除它然后返回新的分组 block ,

我只想遍历组数组,直到它们变空。而不是一遍又一遍地调用这个函数

最佳答案

代替:

return ids;

再次调用主函数:

LoopArrayGroups(ids);

备注

在大多数环境下,递归调用会增加每次调用时堆栈的使用,因为目前实现尾递归优化的 JavaScript 引擎并不多。

实际上这意味着如果您有大量 block ,您可能会遇到堆栈溢出错误。如果这是一个问题,您应该更改递归调用以使其异步:

setTimeout(LoopArrayGroups.bind(ids), 0);

因为您已经在 myFunction 中进行了异步处理,所以实际上这样做没有任何缺点。

关于Javascript 遍历 block /分组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39062245/

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