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