为什么我不能用for Each迭代对象

Why cant I iterate over Object with for Each

本文关键字:Each 迭代 对象 for 不能 为什么      更新时间:2023-09-26

我正在尝试使用forEach数组方法迭代对象。

var obj = {"a":1, "b":2, "c":3};
[].forEach.call(obj, function(n, key) {
    console.log(key, n)
})

应打印

a: 1

b: 2

c: 3

这不起作用,因为它在调试器中返回未定义,即使我人为地将长度属性添加到obj-

obj.length = 3;

我如何使这个对象数组像这样,这样我就可以在对象上调用foreach这样的数组方法。我知道还有其他方法可以迭代对象。我只是想知道在这种情况下我做错了什么。

Array.prototype.forEach()仅适用于数组,不适用于对象。您可以使用Object.keys()在对象自己的可枚举属性上循环:

var obj = {"a":1, "b":2, "c":3};
Object.keys(obj).forEach(function(key) {
    console.log(key, obj[key]);
});