遍历Javascript数组以计算保龄球得分

时间:2019-05-12 11:09:02

标签: javascript arrays

我正在编写一个保龄球计分应用程序,并且正在努力计算我的罢工得分。如果玩家得分,则他们将获得该掷骰的分数(10)以及接下来两掷的分数。我正在尝试找出如何遍历数组以添加下两卷的结果。例如,我的分数数组可能是:

scores = [10, 1, 5, 1, 2, 10, 5, 2, 10, 10, 8, 1, 10, 3, 2] 

我正在尝试遍历数组,以便每次得分为10时,将下两个数字加到总数中。我有以下代码:

for (i = 0; i < scores.length; i++) {
    if(scores[i] == 10){
    result += scores[i + 2]
    }
  return result
}

这不起作用。我对Java语言非常陌生!

P.S。我知道一个真正的保龄球游戏会获得十分之一的帧奖励,但我尚未实现该功能。

任何帮助将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:0)

您必须在循环之外存储result

let result = 0;

for (i = 0; i < scores.length; i++) {
  if (score[i] === 10) {
    result += scores[i + 1];
    result += scores[i + 2];
  }

  result += score[i];
}

或更实用的方法:

function calculateScore(scores) {
  let result = 0;

  scores.forEach((score, index) => {
    if (score === 10) {
      result += scores[index + 1];
      result += scores[index + 2];
    }

    result += score;
  });

  return result;
}

并使用Array.reduce()

function calculateScore(scores) {
  return scores.reduce((accumulator, currentValue, index) => {
    if (currentValue === 10) {
      return accumulator + currentValue + scores[index + 1] + scores[index + 2];
    }

    return accumulator + currentValue;
  }, 0);
}

答案 1 :(得分:0)

function totalScore(ScoreArray) {
    let result = 0;
    for (i = 0; i < scores.length; i++) {
        if (scores[i] == 10) {
            result += scores[i + 2] + scores[i + 1];
        }
        result += scores[i];
    }
    return result;
}


totalScore([1, 5, 10, 3, 2]);

尽管您还需要额外的检查,但是您可以自己进行检查。

提示:确保数组中存在下两个值。然后仅将其添加到result。如果最后一个值为10,则此函数将引发错误。

答案 2 :(得分:-1)

let result = 0;

for (let i = 0; i < scores.length; i++) {
  if (scores[i] === 10) {
    result += (i + 1 < scores.length) ? scores[i + 1] : 0;
    result += (i + 2 < scores.length) ? scores[i + 2] : 0;
  }
  result += scores[i];
}