私は codeacademy の JavaScript 演習の 1 つを行っていて、これに遭遇しました。次のコードは、codeacademy によって提供されます。
var friends = {
bill: {
firstName: "Bill",
lastName: "Gates",
number: "1",
address: ['abc', 'def', 'ghi']
},
steve: {
firstName: "Steve",
lastNAme: "Jobs",
number: "2",
address: ['abc', 'def', 'ghi']
}
};
var list = function(obj) {
for (var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for (var prop in friends) {
if (friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
}
};
私が理解していないのは、検索機能で、単に「prop」ではなく「friends[prop]」と書き出す必要がある理由です。for/in ループが friends(array?) のすべてのプロパティを反復処理している場合、各 props が属する配列を再度指定する必要があるのはなぜですか? 次のコードを使用できないのはなぜですか?
var search = function(name) {
for (var prop in friends) {
if (prop.firstName === name) {
console.log(prop);
return prop;
}
}
};