这是一个小代码片段:
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++;
}
}
经过一些调试后,我发现当我遍历“o”对象(第二个循环)中的所有属性时,循环只执行了 6 次而不是 7 次。
尽管在第一个循环中向“o”对象添加了 7 个属性。
这是为什么?我在第一个循环中添加了 7 个属性,为什么第二个循环只执行了 6 次?
最佳答案
原因不是因为数字 12 在 cards 数组中出现两次,就像 Pointy 在评论中所说的那样。他说 2 个属性不能具有相同的值,这帮助我理解了。我是说 e = cards[i] + suits[i];
有时这两个值加在一起有时会得出相同的答案。例如在这个例子中 3 + 8 = 11 和 10 + 1 也 = 11
关于javascript - 为什么这段代码不遍历对象的所有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34233810/