我有一个如下的JavaScript对象:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
如何遍历p
的所有元素(p1
、p2
、p3
...)并获取它们的键和值?
你可以使用其他人展示的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()的for-of替代方案:
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
请注意,如果不使用它,在命名属性上将返回undefined,并且Object.keys()
确保只使用对象自己的属性,而不包括整个原型链属性。
使用新的Object.entries()
方法:
注意:此方法在Internet Explorer中不受支持。您可能需要考虑为旧浏览器使用Polyfill。
const p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (const [key, value] of Object.entries(p)) {
console.log(`${key}: ${value}`);
}