Javascript For ...在语法问题上?

时间:2013-08-26 19:59:22

标签: javascript loops for-loop iterator for-in-loop

以下代码中的搜索功能不起作用,我相信它与For ... In循环有关,但我是JS的新手并且不确定原因:

var friends = {
bill: {
    firstName: "bill",
    lastName: "smith",
    number: 1,
    address: ["1"]
},
steve: {
    firstName: "steve",
    lastName: "smith",
    number: 2,
    address: ["2"]
}
};

var list = function(list) {
for(var item in list) {
    console.log(item);
}
};

var search = function(name) {

for(var friend in friends) {
    if(friend.firstName === name) {
        console.log(friend);
        return friend;
    }
}
};

search("steve");

2 个答案:

答案 0 :(得分:2)

for in循环遍历,而不是值。

friend是一个包含每个属性名称的字符串 要获取该值,请使用friends[friend]

答案 1 :(得分:0)

可以在mdn找到关于for..in循环的精彩文档。通过每次迭代将variable分配给“不同的属性名称”。

您也可能不需要遍历每个朋友。如果您将搜索功能更改为在对象上使用hasOwnProperty该怎么办:

var search = function(name) {
    if(friends.hasOwnProperty(name)){
        return friends[name];
    }
};

这会检查对象name中是否有friends的属性并将其返回。这是一个快速EXAMPLE