如何在JavaScript中迭代一系列文字对象?
我想做那样的事情:
grupo = []; // declare array
text = {}; // declare new object
text.a = "texta"; // declare property "a" of an object.
text.b = "textb";
grupo.push(text); // add object to array
text = {}; // declare new object
text.a = "textc"; // declare property
grupo.push(text); // add object with other property
// Iterate over
for (i=0; i<=grupo.length; i++) {
console.dir(grupo[i].text.a);
}
答案 0 :(得分:1)
你的意思是这样吗?
for (var key in validation_messages) {
var obj = validation_messages[key];
for (var prop in obj) {
// important check that this is objects own property
// not from prototype prop inherited
if(obj.hasOwnProperty(prop)){
alert(prop + " = " + obj[prop]);
}
}
}
答案 1 :(得分:1)
该代码中存在各种错误:
您将相同的对象放入数组中两次,而不是将两个对象放入数组中。将text
推入数组后,您只需覆盖同一对象上的a
属性并再次推送它。您还没有创建新对象。
你还没有声明你的任何变数(你所说的所有地方都是&#34;声明&#34;在你的评论中,那些不是声明),所以你堕落了猎物The Horror of Implicit Globals。使用var
声明变量。
行注释应以//
开头,而非\\
(导致语法错误)
最后的for
循环应使用<
而非<=
作为终止条件。有关在JavaScript中循环遍历数组的各种方法,see this question and its answers。
这是该代码的清理版本:
var text, grupo, i; // Declare variables
text = {}; // Create an object and assign it to the variable
grupo = []; // Create an array and assign it to the variable
text.a = "texta"; // Set the property `a` on the object
text.b = "textb"; // Set the property `b` on the object
grupo.push(text); // Put that object onto the array
text = {}; // Create a second object
text.a = "textc"; // Set the property `a` on that new object
grupo.push(text); // Put that object on the array
for (i=0;i<grupo.length;i++) {
// ^-------------------- Note no =
console.dir(grupo[i].text.a);
}
答案 2 :(得分:0)
groupo [i]已经是一个文本对象,所以你在那里有一个错误。此外,您不希望直到您的索引是&lt; =到该长度。
以下是您在循环中可能正在寻找的内容:
for (i=0;i<grupo.length;i++) {
console.log(i,grupo[i].a);
}
但是当您发现“a”的值不是您可能期望的值时,您会遇到其他问题。
答案 3 :(得分:0)
这是另一种可能的“解决方案”
var text = {};
var grupo = [];
text.a = "texta";
text.b = "textb";
grupo.push(text);
text.a = "textc";
grupo.push(text);
for (var i=0;i < grupo.length;i++) {
var x = grupo[i];
if (x && x.a){
console.log(x.a);
} else {
console.log(x);
}
}