这是一个小代码片段:
cards = [ 4, 10, 3, 12, 10, 13, 12 ];
suits = [ 1, 64, 8, 8, 1, 1, 32 ];
var o = {}, keyCount = 0, j;
for (i = 0; i < cards.length; i++) {
e = cards[i] + suits[i];
o[e] = 1
}
for (j in o) {
if (o.hasOwnProperty(j)) {
keyCount++;
}
}
经过一些调试后,我发现当我遍历&#39; o&#39;中的所有属性时object(第二个循环)循环只执行6次而不是7次。
尽管在&#39; o&#39;中添加了7个属性。第一个循环中的对象。
这是为什么?我在第一个循环中添加了7个属性,为什么第二个循环只执行6次?
答案 0 :(得分:2)
原因不是因为数字12在扑克阵列中的两倍像Pointy在评论中所说的那样。他说,2个属性不能具有相同的值,这有助于我理解。我说的是e = cards[i] + suits[i];
恰好有时这两个值加在一起有时总结为相同的答案。例如,在该示例中,3 + 8 = 11并且10 + 1也= 11