比较对象属性键与数组中的对象属性值,返回“总点数”

时间:2019-05-19 20:14:21

标签: javascript arrays object properties for-in-loop

链接到Codewars kata。据我了解,基本上:

  • 如果属性键(x)大于属性值(y),请向points添加3点。

  • 如果属性键(x)小于属性值(y),请向points添加0点。

  • 如果属性键(x)等于属性值(y),请向points加1点。

我需要遍历每个单独的属性,以将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;
}

1 个答案:

答案 0 :(得分:1)

详细了解reducemap

#!/usr/bin/env python

TARGET=2

num = range(2**5)
results = []
for i in num:
    for j in num: # 2nd pass
        tmp = i^j
        if bin(tmp).count('1') >=2: 
            results.append(tmp)

print(set(results))