首页 > 解决方案 > 创建一个得分最高的数组

问题描述

嗨,我对编码很陌生,我正在努力了解基础知识。我有一个函数,它遍历一个包含分数的数组并将它们输入到 topScores 数组中,它们高于该数组中的一个项目。这可能看起来没用,但我想知道为什么它在击中分数数组中的第二个项目后停止。

var scores = [60, 70, 80, 90, 100];
var topScores = [];
function arrayAn (score) {
    for (i = 0; i < score.length; i++){
        if (score[i] > topScores){
            topScores.push(score[i])
}}}
arrayAn(scores)
console.log(topScores) // [60, 70]

标签: javascriptarrays

解决方案


它在 2 个数字后停止,因为您不再检查单个数字,而是检查数字数组。

  1. 您正在检查的循环的第一次迭代是:

60 > 没有

什么都没有,因为数组在开始时是空的。topScores 现在是 [60]

  1. 接下来你正在检查

70 > 60

就是这样,您的 topScores 数组中现在将有 2 个数字。[60,70]

之后,topScores 数组将有超过 1 个数字,因此它将无法检查是否大于您正在检查的数字,因为它现在是一个完整的数组。

为此,您必须在某处添加检查,如果当前分数小于 70,则不要将其添加到最高分数数组中。那么它就会有一些意义。

希望有帮助。

var scores = [60, 70, 80, 90, 100];
var topScores = [];

function arrayAn(score) {
  for (i = 0; i < score.length; i++) {
    
    console.log(score[i] + " > " + topScores);
    
    if (score[i] > topScores) {
      topScores.push(score[i]);
    }
    
    
  }
}
arrayAn(scores);
console.log(topScores); // [60, 70]


推荐阅读