对不起,如果我的问题不好。我被困在以下简单的 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' { 代码 }
最佳答案
这里不是数组,而是 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"]
。
(另请注意,您的问题更新中的对象文字语法不正确:在您使用 =
的地方,您应该使用 :
如我上面的回答所示.)
关于javascript - 使用javascript从数组访问元素名称(无值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586326/