javascript - 为什么这段代码不遍历对象的所有属性?

标签 javascript

这是一个小代码片段:

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/

相关文章:

javascript - 单击时隐藏下拉菜单项?

javascript - 在 Nowjs 中传递带有回调参数的对象

javascript - 来自 node-js mysql 连接的错误不会保存到数组

javascript - 如何在禁用 JavaScript 时显示不同的内容?

javascript - 使用 js 选中/取消选中所有复选框

javascript - 如何将此 else if 语句转换为 switch 语句?

javascript - 如何用一组 jQuery 对象替换一个 DOM 元素?

javascript - 在不隐藏键盘的情况下从 WebView 评估 Javascript

javascript - 如何检测浏览器是否支持此 HTML5 功能

javascript - Angular 网络套接字工厂