为什么我的代码跳过if语句,只返回else部分? JS

时间:2019-04-16 18:04:18

标签: javascript if-statement iteration

在CodeWars上对新成员进行分类

要成为长者,成员必须至少55岁,并且让分差大于7。在这个槌球俱乐部中,让分范围是-2到+26;球员越好,让分越低。

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

我的代码跳过if部分;它只会返回“打开”,而不会返回“高级”

我已经在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'])

2 个答案:

答案 0 :(得分:2)

应用0、1索引时,需要对其进行更改以查看子数组

*(*(arr + i) + j)

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

答案 1 :(得分:0)

i是一个数字,例如0,因此i[0]undefined,因为数字没有属性。因此,data[i[0]]data[undefined]相同,这可能不是您想要的。也许您想访问位置idata[i])处的数组并获取该数组的第一个值([0])吗?