javascript - 递归创建数组
问题描述
我正在尝试实现一个递归函数,它通过递归填充它返回一个函数数组
//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]),...]
,以便以后可以并行运行它们。
解决方案
您的代码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 调用。
推荐阅读
- c++ - 如何获得大数字作为输入?
- r - R以不同的方式读取空白字符
- laravel-5.8 - 函数 str_slug 已弃用且无法正常工作,我该怎么办?
- python - 制作井字游戏,代码完整,没有错误消息但不会运行?
- csv - Perl - 使用 Text::CSV 将字符串/标量值写入 CSV
- ionic-framework - 如何自定义侧边菜单动画
- javascript - 服务器上可编辑文件的安全性
- java - 如何在 Spring Boot 中使用缓存来提高 OAuth2 ResourceServer 的性能
- python - Python unittest 一个搜索功能
- google-apps-script - 甚至可以使用脚本将数据从一张纸复制到另一张纸上吗?ImportRange 风格?