首页 > 解决方案 > 递归创建数组

问题描述

我正在尝试实现一个递归函数,它通过递归填充它返回一个函数数组

//arr = [1..1000]
//arr2 = [1,2,3]
function divideToSmallerTasks(arr, arr2) {
    let arrLength = arr.length;
    if (arr === undefined || arrLength == 0) {
        return [];
    } else if (arrLength > 100) {
        return (getRelatedGames(arr.slice(0, 100), arr2)).push(divideToSmallerTasks(arr.slice(100, arrLength), arr2));
    } else {
        return (getRelatedGames(arr, arr2).push(divideToSmallerTasks([], arr2));
}

我希望得到一组函数smallerTasks = [function(arr[1..100],arr2[1,2,3]),function(arr[100,..200],arr2[1,2,3]),...],以便以后可以并行运行它们。

标签: javascript

解决方案


您的代码getRelatedGames作为divideToSmallerTasks. 您要做的是创建一个匿名函数,该函数在执行时将按照您的说明运行 getRelatedGames 并返回它。更接近以下内容:(未经测试)

function divideToSmallerTasks(arr,arr2){
        let arrLength = arr.length;
        if(arr === undefined || arrLength == 0){             
             return [];
        }else if(arrLength > 100) {
             let result = divideToSmallerTasks(arr.slice(100,arrLength),arr2);
             result.push(function () { return getRelatedGames(arr,arr2); });
             return result;
        }else{
             return [function () { return getRelatedGames(arr,arr2); }]
;}

这应该会产生一个函数列表,您可以在任何时候一一执行并执行预期的 getRelatedGames 调用。


推荐阅读