【发布时间】:2019-05-19 20:14:21
【问题描述】:
链接到Codewars kata。基本上,据我了解:
如果属性键(
x)大于属性值(y),则points加3分。如果属性键(
x)小于属性值(y),给points加0分。如果属性键 (
x) 等于属性值 (y),则将 1 点添加到points。
我需要遍历每个单独的属性,以将 x 值与 y 值进行比较。但是我正在尝试的方法不起作用:
function points(games) {
let points = 0;
for (let key in games) {
let item = games[key];
let x = item[0];
let y = item[1];
//compare x values against y values in items
if (x > y) {
points += 3;
}
if (x < y) {
points += 0;
}
if (x === y) {
points += 1;
}
}
return points;
}
console.log(points(["1:0", "2:0", "3:0", "4:0", "2:1", "3:1", "4:1", "3:2", "4:2", "4:3"]));
这是返回 0。
如何遍历数组中的每个属性以在每个单独的属性中进行比较?
编辑 - 将字符串拆分为数组进行比较后,我仍然不明白如何比较数组中的 x 值和 y 值:
function points(games) {
let points = 0;
for (let i = 0; i < games.length; i++) {
let properties = games[i].split();
if (properties[0] > properties[1]) {
points += 3;
}
if (properties[0] < properties[1]) {
points += 0;
}
if (properties[0] === properties[1]) {
points += 1;
}
}
return points;
}
【问题讨论】:
-
您传入的是由冒号分隔的字符串数组,而不是对象或数组。您需要拆分字符串,或传入不同的数据。
-
哦,如果他们被
{}而不是[]包围,那会是一个对象吗? -
它不会运行,因为那将是无效的语法。
-
既然挑战应该是一个字符串数组,你会想知道如何在 JS 中拆分字符串。
-
@DaveNewton - 感谢您的澄清,我将重新编写我的代码。
标签: javascript arrays object properties for-in-loop