我有一个JavaScript对象,如下所示:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
我如何循环遍历p的所有元素(p1、p2、p3…)并获取它们的键和值?
我有一个JavaScript对象,如下所示:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
我如何循环遍历p的所有元素(p1、p2、p3…)并获取它们的键和值?
当前回答
您必须使用for in循环
但在使用这种循环时要非常小心,因为这将沿着原型链循环所有财产。
因此,在循环中使用for时,请始终使用hasOwnProperty方法来确定迭代中的当前属性是否真的是要检查的对象的属性:
for (var prop in p) {
if (!p.hasOwnProperty(prop)) {
//The current property is not a direct property of p
continue;
}
//Do your logic with the property here
}
其他回答
for(key in p) {
alert( p[key] );
}
注意:可以对数组执行此操作,但也要对长度和其他财产进行迭代。
您可以像这样迭代:
for (var key in p) {
alert(p[key]);
}
注意,键不会接受属性的值,它只是一个索引值。
Object.entries(myObject).map(([key, value]) => console.log(key, value))
你可以这样试试。myObject将是{name:“”,phone:“”}等等,这将生成密钥和值。所以这里的关键是名字,电话和价值就像狗,123123。
示例{name:“dog”}
这里的键是名字,值是狗。
您可以使用for in循环,如其他人所示。然而,您还必须确保获得的密钥是对象的实际属性,而不是来自原型。
下面是片段:变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(p中的var键){if(p.hasOwnProperty(键)){console.log(键+“->”+p[key]);}}
对于具有Object.keys()选项的:
变量p={0:“值1”,“b”:“值2”,键:“value3”};for(Object.keys(p)的var键){console.log(key+“->”+p[key])}
请注意for-of而不是for-in的用法,如果不使用,它将在命名的财产上返回undefined,并且Object.keys()确保只使用对象自己的财产,而不使用整个prototype-chain财产
使用新的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}`);
}
您必须使用for in循环
但在使用这种循环时要非常小心,因为这将沿着原型链循环所有财产。
因此,在循环中使用for时,请始终使用hasOwnProperty方法来确定迭代中的当前属性是否真的是要检查的对象的属性:
for (var prop in p) {
if (!p.hasOwnProperty(prop)) {
//The current property is not a direct property of p
continue;
}
//Do your logic with the property here
}