Javascript 对于对象数组中的
我正在编写一段代码,用于打印数组中对象的内容。我通过打印出对象的每一项来实现这一点,但我想知道是否可以通过以下方式实现这一点:Javascript 对于对象数组中的,javascript,oop,object,for-in-loop,Javascript,Oop,Object,For In Loop,我正在编写一段代码,用于打印数组中对象的内容。我通过打印出对象的每一项来实现这一点,但我想知道是否可以通过以下方式实现这一点: for(var property in array){ } 以下是我当前使用的代码的副本: for(var i=0;i<app.members.length;i++){ output.innerHTML += "<div class='member'><p><b>Id: </b>" + ap
for(var property in array){
}
以下是我当前使用的代码的副本:
for(var i=0;i<app.members.length;i++){
output.innerHTML += "<div class='member'><p><b>Id: </b>" + app.members[i].id + "</p><p><b>User: </b>" + app.members[i].user + "</p>" +
"<p><b>Name: </b>" + app.members[i].name + "</p><p><b>Email: </b>" + app.members[i].email +
"</p><p><b>Age: </b>" + app.members[i].age + "</p></div>";
};
for(var i=0;ifor in
用于迭代属性,因此我想您可以:
for(var i=0; i < app.members.length; i++) {
for (var prop in app.members[i]) {
output.innerHTML += ("<p><b>" + prop + ":</b> " + app.members[i][prop] + "</p>");
}
}
for(var i=0;i”;
}
}
for in
用于迭代属性,因此我想您可以:
for(var i=0; i < app.members.length; i++) {
for (var prop in app.members[i]) {
output.innerHTML += ("<p><b>" + prop + ":</b> " + app.members[i][prop] + "</p>");
}
}
for(var i=0;i”;
}
}
使用for…在
中,可以迭代对象的属性,但不能迭代数组中所有对象的属性
你可以试试
var html = '';
for(var i=0; i<app.members.length; i++){
html += "<div class='member'>";
var member = app.members[i];
for(var prop in member) if(member.hasOwnProperty(prop)) {
html += "<p><b>" + prop + ":</b> " + member[prop] + "</p>";
}
html += "</div>";
}
output.innerHTML = html;
还要注意,DOM操作(如innerHTML
)很慢,因此如果可以,请避免在每次迭代中使用它们。最好使用变量,并在最后更新DOM。使用for…在中,可以迭代对象的属性,但不能迭代数组中所有对象的属性
你可以试试
var html = '';
for(var i=0; i<app.members.length; i++){
html += "<div class='member'>";
var member = app.members[i];
for(var prop in member) if(member.hasOwnProperty(prop)) {
html += "<p><b>" + prop + ":</b> " + member[prop] + "</p>";
}
html += "</div>";
}
output.innerHTML = html;
还要注意DOM操作(如innerHTML
)很慢,因此如果可以,请避免在每次迭代中使用它们。最好使用变量,并在最后更新DOM。尝试使用hasOwnProperty方法
for(var property in app.members){
if (app.members.hasOwnProperty(property))
output.innerHTML += ("<p><b>" + property + ":</b> " + app.members[property] + "</p>");
};
for(app.members中的var属性){
if(app.members.hasOwnProperty(property))
output.innerHTML+=(“”+property+”:“+app.members[property]+””;
};
来自MDN:
从object派生的每个对象都继承hasOwnProperty方法。此方法可用于确定对象是否具有指定的属性作为该对象的直接属性;与in运算符不同,此方法不检查对象的原型链。尝试使用hasOwnProperty方法
for(var property in app.members){
if (app.members.hasOwnProperty(property))
output.innerHTML += ("<p><b>" + property + ":</b> " + app.members[property] + "</p>");
};
for(app.members中的var属性){
if(app.members.hasOwnProperty(property))
output.innerHTML+=(“”+property+”:“+app.members[property]+””;
};
来自MDN:
从object派生的每个对象都继承hasOwnProperty方法。此方法可用于确定对象是否具有作为该对象的直接属性的指定属性;与in运算符不同,此方法不会检查对象的原型链。您在工作代码中的做法是正确的-您想做什么使用for in
?for…in
对数组进行ping改进是一种不好的迭代方式。我相信它确实可以减少正在执行的代码量。看起来也更整洁。@Oriol--为什么这是一种不好的方式?@hudsond7,因为它还迭代对象原型链(继承属性),这会导致意外的结果。您在工作代码中使用了正确的方法-您希望使用for in
改进什么?for…in
是一种不好的数组迭代方法。我相信它确实可以减少正在执行的代码量。而且看起来更整洁。@Oriol--为什么这是一种不好的方法?@hudsond7,因为它还迭代对象原型链(继承的属性),这会导致意外的结果。你是说app.members[i]
?否则,我看不出这是在做什么,因为OP不是完全正确的。请再看一看。这会打印出数组中对象的属性吗?在运行for时,它会打印对象,我不清楚如何将其放入for循环中。@JasonBaker--是的-错过了[I]
@hudsond7--请再试一次,我做了一次编辑-在
中错过了
中的一个重要部分,你是说app.members[I]
?否则,我看不出这是在做什么,因为OP不是完全正确的。请再看一看。这会打印出数组中对象的属性吗?在运行for时,它会打印对象,我不清楚如何将其放入for循环中。@JasonBaker--是的-错过了[I]
@hudsond7--请再试一次,我做了一次编辑-遗漏了中的一个重要部分,因为在
中,如果我将第二个示例放入一个已经结构化的HTML文档中,它是否仍然适用?@hudsond7不确定“一个已经结构化的文档”是,但我不明白为什么它应该适用。如果我将第二个示例放在一个已经结构化的HTML文档中,它是否仍然适用?@hudsond7不确定“一个已经结构化的文档”是否适用,但我不明白为什么它应该适用。