Javascript 回调函数的Return命令
您好-我正在处理一个特定的codewars问题,我似乎误解了回调函数的Javascript 回调函数的Return命令,javascript,callback,Javascript,Callback,您好-我正在处理一个特定的codewars问题,我似乎误解了回调函数的return用法。在这个特殊的问题中,我只想找到前两个等于目标的数字和,并将这些索引值推到结果中。我不想在那之后继续迭代我的函数——这意味着我只想要找到的第一对。我的当前输出为我提供了目标和的所有索引值。不仅仅是前两个。似乎我没有正确使用return命令。我目前的思路是返回结果将一个值返回到嵌套的参数回调(value2,index2)。然后将该结果返回到我的(值,索引)的外部函数。为什么我的循环在返回后不停止 它不会结束,因为
return
用法。在这个特殊的问题中,我只想找到前两个等于目标的数字和,并将这些索引值推到结果中。我不想在那之后继续迭代我的函数——这意味着我只想要找到的第一对。我的当前输出为我提供了目标和的所有索引值。不仅仅是前两个。似乎我没有正确使用return命令。我目前的思路是返回结果
将一个值返回到嵌套的参数回调(value2,index2)
。然后将该结果返回到我的(值,索引)
的外部函数。为什么我的循环在返回后不停止 它不会结束,因为.forEach
不能提前终止forEach
不注意您返回的值。如果你想提前终止合同,你需要使用不同的方法
如果您想坚持使用数组方法,有。一些和。每个。前者持续到函数运行返回true,后者持续到函数运行返回false。这些用于对数组中的每个元素执行复合OR和复合and,但它们也可以用于您的情况
function twoSum(numbers, target) {
var result = [];
numbers.forEach(function(value, index) {
return numbers.forEach(function(value2, index2) {
if (value + value2 === target) {
result.push(index, index2);
return result;
}
})
})
return result;
}
twoSum([1, 2, 3], 4);
//Output - [ 0, 2, 1, 1, 2, 0 ]
或者,当您想要停止循环时,您可以使用标准for循环,并使用break
关键字。除了外部函数的not workingreturn
语句之外,您需要采取不同的方法,只使用单个循环和一个对象来存储找到的值的索引
函数twoSum(数字、目标){
var指数={};
for(设i=0;i log(twoSum([1,2,3,4])代码> <代码>前额()/代码>不会返回任何东西,并且不会对回调函数的返回值做任何事情。在中间没有办法阻止<代码>前缀()/<代码>。如果要在找到第一对后停止,请使用for
循环,然后使用break
停止。谢谢。我想我可以像使用for循环
一样使用forEach()。如果使用jQuery,可以使用$。each()
。如果回调函数返回false
,它将停止。谢谢。我不知道您不能提前终止.forEach
,但现在它没有注意自身的返回值,这是有意义的
numbers.some(function(value, index) {
return numbers.some(function(value2, index2) {
if (value + value2 === target) {
result.push(index, index2);
return true;
}
return false;
})
})