首页 > 解决方案 > 为什么我的代码会跳过 if 语句而只返回 else 部分?JS

问题描述

在 CodeWars 上对新成员进行分类

要成为高级会员,会员必须年满 55 岁并且差点大于 7。在这个槌球俱乐部,差点范围从 -2 到 +26;球员越好,差点越低。

输入 输入将包含一个列表列表,每个列表包含两个项目。每个列表都包含单个潜在成员的信息。信息由一个表示个人年龄的整数和一个表示个人残障的整数组成。

我的代码跳过了 if 部分;它只返回“Open”而不是“Senior”

我已经在 stackoverflow 上查看过类似的问题;但是,我在 JavaScript 中找不到一个(见过 java、css、html、python 等)。此外,已经提出的问题似乎更多地与 if 语句中的 if 语句有关,或者它们有相反的问题,即跳过 else 语句。我试过切换“打开”和“高级”检查,但这不起作用。在将 int 与字符串一起使用之前我遇到了问题,反之亦然,但我认为在这种情况下这不应该是一个问题,因为它们在这里都是整数。

function openOrSenior(data){
  var array = [];
  for(var i = 0; i < data.length; i++) {
    var age = data[i[0]];
    var handicap = data[i[1]];
    if (age >= 55 && handicap > 7) {
      array.push("Senior");
    } else {
      array.push("Open");
    }
  }
  return array;
}

测试清单

Test.assertSimilar(openOrSenior([[45, 12],[55,21],[19, -2],[104, 20]]),['Open', 'Senior', 'Open', 'Senior']) => returned [['Open', 'Open', 'Open', 'Open'])

Test.assertSimilar(openOrSenior([[59, 12],[55,-1],[12, -2],[12, 12]]),['Senior', 'Open', 'Open', 'Open']) => returned [['Open', 'Open', 'Open', 'Open'])

标签: javascriptif-statementiteration

解决方案


当您应用 0、1 索引时,您需要更改它以查看子数组

var age = data[i][0];
var handicap = data[i][1];

function openOrSenior(data){
  var array = [];
  for(var i = 0; i < data.length; i++) {
    var age = data[i][0];
    var handicap = data[i][1];
    if (age >= 55 && handicap > 7) {
      array.push("Senior");
    } else {
      array.push("Open");
    }
  }
  return array;
}

console.log(openOrSenior([[45, 12],[55,21],[19, -2],[104, 20]]));
console.log(openOrSenior([[59, 12],[55,-1],[12, -2],[12, 12]]));


推荐阅读