一尘不染

如何遍历或枚举JavaScript对象?

javascript

我有一个如下的JavaScript对象:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

现在我想通过所有回路p元素(p1p2p3…),并得到他们的键和值。我怎样才能做到这一点?

我可以根据需要修改JavaScript对象。我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval


阅读 283

收藏
2020-04-22

共1个答案

一尘不染

您可以使用for-in其他人所示的循环。但是,您还必须确保获得的键是对象的实际属性,而不是来自原型。

这是代码段:

var p = {

    "p1": "value1",

    "p2": "value2",

    "p3": "value3"

};



for (var key in p) {

    if (p.hasOwnProperty(key)) {

        console.log(key + " -> " + p[key]);

    }

}

用Object.keys()替代:

var p = {

    0: "value1",

    "b": "value2",

    key: "value3"

};



for (var key of Object.keys(p)) {

    console.log(key + " -> " + p[key])

}

请注意,使用of for-of代替for- in,如果不使用它将在命名属性上返回未定义,并Object.keys()确保仅使用对象自身的属性,而不使用整个原型链属性

使用新Object.entries()方法:

注意: Internet Explorer本身不支持此方法。您可以考虑将Polyfill用于较旧的浏览器。

const p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

for (let [key, value] of Object.entries(p)) {
  console.log(`${key}: ${value}`);
}
2020-04-22