Javascript 回调函数的Return命令

Javascript 回调函数的Return命令,javascript,callback,Javascript,Callback,您好-我正在处理一个特定的codewars问题,我似乎误解了回调函数的return用法。在这个特殊的问题中,我只想找到前两个等于目标的数字和,并将这些索引值推到结果中。我不想在那之后继续迭代我的函数——这意味着我只想要找到的第一对。我的当前输出为我提供了目标和的所有索引值。不仅仅是前两个。似乎我没有正确使用return命令。我目前的思路是返回结果将一个值返回到嵌套的参数回调(value2,index2)。然后将该结果返回到我的(值,索引)的外部函数。为什么我的循环在返回后不停止 它不会结束,因为

您好-我正在处理一个特定的codewars问题,我似乎误解了回调函数的
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 working
return
语句之外,您需要采取不同的方法,只使用单个循环和一个对象来存储找到的值的索引

函数twoSum(数字、目标){
var指数={};
for(设i=0;ilog(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;
  }) 
})