javascript - 为什么我的代码会跳过 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'])
解决方案
当您应用 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]]));