0

以下代码中的搜索功能不起作用,我相信它与 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");
4

2 回答 2

2

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

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

于 2013-08-26T20:00:38.003 回答
0

可以在mdn上找到有关 for..in 循环的优秀文档。每次迭代将wherevariable分配给“不同的属性名称”。

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

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

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

于 2013-08-26T20:14:58.550 回答