我有一个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…)并获取它们的键和值?
当前回答
如果有人需要使用条件循环遍历arrayObjects:
var arrayObjects=〔{“building”:“A”,“status”:“good”},{“building”:“B”,“status”:“恐怖”}〕;for(var i=0;i<arrayObjects.length;i++){console.log(arrayObjects[i]);for(arrayObjects[i]中的键){if(key==“status”&&arrayObjects[i][key]==“good”){console.log(key+“->”+arrayObjects[i][key]);}其他{console.log(“未找到任何内容”);}}}
其他回答
您可以像这样迭代:
for (var key in p) {
alert(p[key]);
}
注意,键不会接受属性的值,它只是一个索引值。
我在使用Angular时遇到了类似的问题,这里是我找到的解决方案。
步骤1。获取所有对象关键点。使用Object.keys。此方法返回给定对象自己的可枚举财产的数组。
步骤2。创建一个空数组。这是所有财产都将存在的地方,因为您的新ngFor循环将指向此数组,所以我们必须捕获所有属性。步骤3。迭代抛出所有键,并将每个键推入您创建的数组中。这是代码中的样子。
// Evil response in a variable. Here are all my vehicles.
let evilResponse = {
"car" :
{
"color" : "red",
"model" : "2013"
},
"motorcycle":
{
"color" : "red",
"model" : "2016"
},
"bicycle":
{
"color" : "red",
"model" : "2011"
}
}
// Step 1. Get all the object keys.
let evilResponseProps = Object.keys(evilResponse);
// Step 2. Create an empty array.
let goodResponse = [];
// Step 3. Iterate throw all keys.
for (prop of evilResponseProps) {
goodResponse.push(evilResponseProps[prop]);
}
这里是原始帖子的链接。https://medium.com/@papponmx/循环对象属性-带ngfor-in-angular-869cd7b2ddcc
在ECMAScript 5中,在literal-Object.keys的迭代字段中有了新的方法
您可以在MDN上看到更多信息
我的选择如下,作为当前版本浏览器(Chrome30、IE10、FF25)中的更快解决方案
var keys = Object.keys(p),
len = keys.length,
i = 0,
prop,
value;
while (i < len) {
prop = keys[i];
value = p[prop];
i += 1;
}
您可以将此方法的性能与jsperf.com上的不同实现进行比较:
扩展实施对象键迭代对象文字迭代
您可以在Kangax的兼容表上看到浏览器支持
对于旧浏览器,您有简单而完整的polyfill
UPD:
perfjs.info上此问题中所有最常见情况的性能比较:
对象文字迭代
如果只想迭代财产,请使用上面的答案之一,但是如果要迭代包括函数在内的所有内容,则可能需要使用Object.getOwnPropertyNames(obj)
for(let o of Object.getOwnPropertyNames(数学)){console.log(o);}
我有时会用它来快速测试具有简单输入和输出的对象上的所有函数。
在查看了这里的所有答案后,hasOwnProperty对于我自己的使用是不需要的,因为我的json对象是干净的;添加任何额外的javascript处理确实没有意义。这就是我所使用的:
for (var key in p) {
console.log(key + ' => ' + p[key]);
// key is key
// value is p[key]
}