我在这里疯了,我有一个如下所示的关联数组,它是在页面加载完成后定义的。然而Array.forEach又回来了undefined,我不知道为什么。该数组肯定是在循环期间填充的。谁能给我任何想法吗?也不适用于 JQuery$.each
数组通常是索引(从 0 到 2 32 \xe2\x88\x92 2 之间的整数)到value的映射。在您的情况下,您已将数组视为字典,例如key (string) 到value。
\n您可能已经做过这样的事情:
\nmembers = new Array();\nmembers[\'animerox1213\'] = \'Ashima\';\nRun Code Online (Sandbox Code Playgroud)\nJavaScript 允许这样做,毕竟它仍然是一个对象:
\ntypeof members === \'object\'\nRun Code Online (Sandbox Code Playgroud)\n但您实际上并没有向数组添加值,而是在名为 的对象上设置了一个非数字属性animerox1213。这不是数组应该如何使用的,我们可以通过检查大小来观察这一点:
members.length === 0;\nRun Code Online (Sandbox Code Playgroud)\n因此,forEach不执行任何操作,因为它认为它是一个空数组。
也就是说,它可以用for\xe2\x80\xa6in枚举,因为它仍然只是一个对象(具有可枚举属性):
for (m in members) {\n console.log(m, members[m]);\n}\nRun Code Online (Sandbox Code Playgroud)\n考虑仅使用一个对象,例如members = {}或Map。特别注意对象与地图部分。