所以,我理解这个例子中的所有内容,但有一件事。 在搜索功能中为什么需要写
if (friends[key].firstName === name)
而不是
if (key.firstName === name)
我相信当对象被一个接一个地抓取时,写“friends[key].firstName”似乎是多余的
循环不是已经只有一个对象并且只是将其与名称参数进行比较吗?
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
firstName: "Steve",
lastName: "Ballmer",
number: "(206) 444-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
var list = function(friends) {
for (var key in friends) {
console.log(key);
}
};
var search = function(name) {
for (var key in friends) {
if (friends[key].firstName === name) {
console.log(friends[key]);
return friends[key];
}
}
};
search("Steve");
最佳答案
因为使用 for...in 循环,第一个变量(本例中为 key
)表示属性的名称,而不是值本身。对于来自使用 for...each 循环的语言的人来说,这是一个非常常见的误解(通常在语法上非常相似,但服务于完全不同的目的,因为它们用于迭代集合,与 for...in 循环不同,它是用于迭代对象的属性),其中变量直接表示当前迭代中拉取的值。
关于javascript - 在此示例中,为什么在循环数组时需要数组名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586749/