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

时间:2011-12-21 07:25:24

标签: javascript

对不起,如果我的问题不好。我陷入了以下简单的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 }

4 个答案:

答案 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+ " ");
}

<强>更新

JsFiddle example

答案 2 :(得分:1)

您可以访问fname对象的两个属性lnameperson,如下所示:

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 
    }
}

但是,您发布的代码无效。属性/值对由:分隔,而不是=