javascript - 当 for 循环处理对象数组时 forEach 不起作用

标签 javascript arrays function for-loop foreach

我有一个这样的数组

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/

相关文章:

javascript - Javascript 中对 "trim"数组的更短/更好的回答?

php - fatal error : Cannot use string offset as an array

C - 函数未执行。调用错误?

Javascript:使用函数上下文与作为参数传递有什么好处

c - 包装来自静态库错误的函数调用

javascript - 在 Angular 2 中如何保留查询参数并向路由添加额外的查询参数

javascript - 谷歌地图反向地理编码不返回正确/准确的地址

javascript - 每次重新加载 JSP 时都会加载外部 Javascript

javascript - 代码挑战 : Create a class Foo that tracks the number of total object instances

c - c语言声明时按索引赋值数组