【发布时间】:2022-01-19 01:48:56
【问题描述】:
我有一个对象数组,例如:
[{}, {}, {}, {}, {}];
我还有一个递归函数,它接受一个函数作为参数:
function recursiveFunction(getResponse) {
const result = getResponse();
const conditionMet = check(result);
if(conditionMet) {
return result;
}
return recursiveFunction(getResponse);
}
如何创建一个函数 getResponse,以便每次在 recursiveFunction 中调用它时,它都会返回我数组的下一次迭代?
例如,在每次递归时,它应该获取数组中的下一个对象:
function getResponse(index) {
return array[index ++];
}
当我调用它时:
const firstIndex = -1; // Because index ++ in function
const result = recursiveFunction(getResponse(firstIndex));
我明白为什么它只返回第一个值,但我不确定如何修改它以在再次调用它时返回数组中的下一个索引。
【问题讨论】:
-
getResponse()应该是包含当前数组索引和数组的环境中的闭包。它可以增加索引并返回该数组元素。 -
这似乎是一个家庭作业,所以不要索要代码。
-
我想我应该提供上下文。在我的例子中,
recursiveFunction是一个函数,它递归地调用一个 api 端点,然后在满足条件时最终返回(本质上是轮询同一个端点)。我正在尝试为该特定函数编写一个单元测试,而我的数组是响应的模拟,因此为什么我使用回调,所以我可以传入函数来发出GET请求并传入另一个函数,它只是返回我的模拟中的响应。 -
好的,这不是家庭作业。但是我们仍然希望您先尝试解决它,然后我们会帮助您解决它。
-
在 ES6 中,您可以在包含
let数组和索引变量的块中创建一个函数。在 ES5 中,使用 IIFE 为变量创建环境。
标签: javascript arrays recursion