Javascript 当数字13出现时,对数组求和停止,但仍然返回sum

Javascript 当数字13出现时,对数组求和停止,但仍然返回sum,javascript,arrays,Javascript,Arrays,我对Javascript非常陌生。我试着在这里寻找答案,但不是很幸运,也许我就是这么问的。所以,现在我要发帖了 我有一个循环,在这个循环中我要得到数组的和。但是,如果数字13在数组中,则循环停止将数字相加,但仍然返回它在到达13之前添加的数字。现在,我的代码是: function sumNumbers(array) { var sum = 0; for(var i = 0; i < array.length; i++) { sum += array[i]; if(a

我对Javascript非常陌生。我试着在这里寻找答案,但不是很幸运,也许我就是这么问的。所以,现在我要发帖了

我有一个循环,在这个循环中我要得到数组的和。但是,如果数字13在数组中,则循环停止将数字相加,但仍然返回它在到达13之前添加的数字。现在,我的代码是:

function sumNumbers(array) {
  var sum = 0;
  for(var i = 0; i < array.length; i++) {
    sum += array[i];
    if(array[i] == 13) {
      break;
    }
  }
  return sum;
}
函数数(数组){
var总和=0;
对于(var i=0;i
我为函数设置了参数,它是
'array'
。然后我想我必须创建一个变量,数组的总和将出现在这个变量中,所以我从
0
开始使用它(我确实尝试了
[]
,但测试了它,结果不正确-仍然想理解这一点)。我知道,对于任何循环,都必须进行初始化,即
I=0
,然后是条件,然后是最终表达式。因为元素的数量没有定义,所以我使用了长度。所以,它说,如果变量i小于这个数字,那么它将继续运行,并继续向它添加。因此,我要求它获取所有数组的总和,但如果数组中的任何数字是
13
,我需要它停止,但仍然返回它在到达
13
之前添加的数字

现在定义了函数,返回所有数组的总和,当其为空时返回
0
。但是,我得到了这个错误

预期
16
3
完全相等


不知道我做错了什么。如果有人能帮忙解释一下,那就太棒了。这是我在这里的第一个问题,所以如果我做了一个恼人的方式,提前谢谢你

如果在找到13时需要停止加法,而在求和中没有包含13,则需要在将下一个数组元素的值添加到求和之前检查其值。我颠倒了你代码中的两行。请参阅新版本:

function sumNumbers (array) {
  // First check if the array is a valid input to this function
  if (typeof array == 'undefined')
      return 0; // Or even better throw an exception

  var sum = 0;
  for (var i = 0; i < array.length; i++) {
      if (array[i] == 13) { break; }
      sum += array[i];
  }
  return sum;
}
函数数(数组){
//首先检查数组是否是此函数的有效输入
if(数组类型=='undefined')
返回0;//或者更好地抛出异常
var总和=0;
对于(var i=0;i

它与forEach类似,但只要返回true,它就会停止循环。它是为你这样的场景创建的

let total = 0;
[3,7,4,3,2,1,13,44,66,8,408,2].some(num => {
  if (num === 13) return true;
  total += num;
});
console.log(total); //-> 20
以下是您将如何使用它:

function sumNumbers (arr) {
    let total = 0;
    arr.some(num => {
      if (num === 13) return true;
      total += num;
    });
    return total;
}

有很多方法可以做到这一点。。。其中一项:

函数数(数组){
var总和=0;
对于(变量i=0;数组[i]!=13;i++){
总和+=数组[i];
}
回报金额;

}
您得到了什么错误?你要传递的数组是什么?break将只用于退出for loop我想这不是一个真正的错误,只是它期望一个不同的答案。我假设我需要在休息后放一些别的东西,这样它仍然会返回总数。所以,就像…[1,2,13]仍然会返回3而不是返回16。我认为您应该理解OP(正如他提到的)是一个JavaScript乞丐。你如何期望他容易理解你使用的箭头函数、构造函数原型、严格比较等等?也许他只是在寻找简单的解决方案。我是一个自学成才的开发人员,通过阅读我不懂的代码来学习。我对我的回答不道歉,如果OP有问题,他们可以问,我很乐意帮助他们学习。我回答的重点是,该语言具有解决问题的结构,他/她应该知道这一点。如果13从未出现在数组中会怎么样?我也运行了这段代码,它工作了。另外,谢谢你的解释,这完全有道理。我把上面的答案做对了,因为我需要休息。这个答案非常有帮助,我喜欢看到它可以用不同的方式完成。非常感谢。也谢谢你的解释。非常感谢@欢迎您的光临,我们很乐意为您提供帮助。我们曾经都是初学者。