我有一个这样的数组
var updates = [];
然后我像这样向数组中添加内容
updates["func1"] = function () { x += 5 };
当我用 for 循环调用函数时,它按预期工作
for(var update in updates) {
updates[update]();
}
但是当我使用 forEach 时它不起作用!?
updates.forEach(function (update) {
update();
});
forEach 在我的 google chrome 浏览器中肯定能正常工作,我做错了什么?
最佳答案
forEach遍历 indexes
而不是 properties
。您的代码:
updates["func1"] = "something";
向对象添加属性——顺便说一下,这是一个数组——而不是数组的元素。 事实上,它相当于:
updates.func1 = "something";
如果您需要 HashMap 之类的东西,那么您可以改用普通对象:
updates = {};
updates["func1"] = "something";
然后使用for...in
进行迭代,即shouldn't be used on arrays
或者您可以使用 Object.keys检索属性并对其进行迭代:
Object.keys(updates).forEach(function(key) {
console.log(key);
});
关于javascript - 当 for 循环处理对象数组时 forEach 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846274/