使用javascript从数组访问元素名称(无值)

Sna*_*yes 1 javascript

对不起,如果我的问题不好.我陷入了以下简单的javascript代码:

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
{
document.write(person[x] + " ");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码结果是: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"}]
Run Code Online (Sandbox Code Playgroud)

我想迭代这个数组并将该元素与我拥有的值进行比较. if object1.Group == 'Group3' { code }

nnn*_*nnn 5

你在这里不是一个数组,它是一个JavaScript对象.(简单来说,)数组具有数字索引,而对象具有属性名称和值对的属性.

要访问像"lname"这样的特定对象属性,只需说:

person.lname
// OR
person["lname"]
Run Code Online (Sandbox Code Playgroud)

或者,如果要使用的属性的名称位于变量中:

var whichProp = "lname";
person[whichProp]
Run Code Online (Sandbox Code Playgroud)

根据您的数据,生成输出"John Doe",您会说:

document.write(person.fname + " " + person.lname);
Run Code Online (Sandbox Code Playgroud)

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 ];
Run Code Online (Sandbox Code Playgroud)

并且您想要找到Group为"Group3"的元素,然后使用传统的for循环遍历数组,如下所示:

for (var i=0; i < people.length; i++) {
   if (people[i]["Group"] === "Group3") {
      // do something
   }
}
Run Code Online (Sandbox Code Playgroud)

break如果要在第一次匹配后停止处理,则可以在if语句中添加语句.当然,您可以自由使用people[i].Group语法而不是people[i]["Group"]您喜欢的语法.

(另请注意,在您的问题更新中,您的对象文字语法不正确:您使用=过的地方应该使用:,如上面的答案所示.)