我有一个如下的JavaScript对象:
var p = { "p1": "value1", "p2": "value2", "p3": "value3" };
现在我想通过所有回路p元素(p1,p2,p3…),并得到他们的键和值。我怎样才能做到这一点?
p
p1
p2
p3
我可以根据需要修改JavaScript对象。我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval。
eval
您可以使用for-in其他人所示的循环。但是,您还必须确保获得的键是对象的实际属性,而不是来自原型。
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()确保仅使用对象自身的属性,而不使用整个原型链属性
for-of
for- in
Object.keys()
使用新Object.entries()方法:
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}`); }