Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于对象数组中的_Javascript_Oop_Object_For In Loop - Fatal编程技术网

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;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 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不确定“一个已经结构化的文档”是否适用,但我不明白为什么它应该适用。