对不起,如果我的问题不好。我陷入了以下简单的javascript代码:
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
document.write(person[x] + " ");
}
上面的代码结果是:John Doe 25
如何仅显示lname
元素的值? (使用for (... in ...)
声明)
我不想使用person={"John","Doe",25}
而不是上述之一。我想知道如何从数组中访问元素以获取值。
谢谢
编辑:感谢大家的回复。之所以创建这个问题,是因为我在数组中有很多项目,如:
[{Name="A 1", Email="a1@manufacturer.com", Group="Group1"},
{Name="A 2", Email="a2@manufacturer.com", Group="Group2"},
{Name="A 3", Email="a3@manufacturer.com", Group="Group3"},
{Name="B 1", Email="b1@manufacturer.com", Group="Group1"},
{Name="V 1", Email="b1@manufacturer.com", Group="Group2"},
{Name="X 1", Email="b1@manufacturer.com", Group="Group4"},
{Name="Y 1", Email="b1@manufacturer.com", Group="Group3"},
{Name="Z 1", Email="b1@manufacturer.com", Group="Group3"},
{Name="W 1", Email="b1@manufacturer.com", Group="Group6"}]
我想迭代这个数组并将该元素与我拥有的值进行比较。
if object1.Group == 'Group3' { code }
答案 0 :(得分:5)
这里有的不是数组,它是一个JavaScript对象。 (简单来说,)数组具有数字索引,而对象具有属性名称和值对的属性。
要访问特定对象属性,例如“lname”,只需说:
person.lname
// OR
person["lname"]
或者,如果要使用的属性的名称位于变量中:
var whichProp = "lname";
person[whichProp]
使用您的数据,生成输出“John Doe”,您会说:
document.write(person.fname + " " + person.lname);
您使用的for (x in person)
语法循环遍历person
对象的每个属性,依次将x
设置为每个属性名称。
更新为您的更新问题:
假设你有一个对象数组:
var people = [{Name:"A 1", Email:"a1@manufacturer.com", Group:"Group1"},
{Name:"A 2", Email:"a2@manufacturer.com", Group:"Group2"},
{Name:"A 3", Email:"a3@manufacturer.com", Group:"Group3"},
// etc ];
并且您想要找到Group为“Group3”的元素,然后使用传统的for循环遍历数组,如下所示:
for (var i=0; i < people.length; i++) {
if (people[i]["Group"] === "Group3") {
// do something
}
}
如果要在第一次匹配后停止处理,则可以在if语句中添加break
语句。当然,如果您愿意,可以使用people[i].Group
语法而不是people[i]["Group"]
。
(另请注意,您的问题更新中的对象文字语法不正确:您使用=
的地方应该使用:
,如上面的答案所示。)
答案 1 :(得分:1)
var arr = [];
var person={fname:"John",lname:"Doe",age:25};
arr.push(person);
for (var i=0; i < arr.length; i++)
{
document.write(arr[i].lname+ " ");
}
<强>更新强>
答案 2 :(得分:1)
您可以访问fname
对象的两个属性lname
,person
,如下所示:
document.write(person.fname + " " + person.lname);
答案 3 :(得分:1)
那不是一个数组,那是一个对象。如果您知道要访问的属性,则无需迭代Object。请直接参考该物业。
person.lname;
编辑:迭代您的数组并在小组匹配时采取措施:
for (var i = 0; i < objects.length; i++) {
if (objects[i].Group == "Group3") {
// do something
}
}
但是,您发布的代码无效。属性/值对由:
分隔,而不是=
。