2016-09-26 102 views
1
var contacts = [ 
{ 
    "firstName": "Akira", 
    "lastName": "Laine", 
    "number": "0543236543", 
    "likes": ["Pizza", "Coding", "Brownie Points"] 
}, 
{ 
    "firstName": "Harry", 
    "lastName": "Potter", 
    "number": "0994372684", 
    "likes": ["Hogwarts", "Magic", "Hagrid"] 
}, 
{ 
    "firstName": "Sherlock", 
    "lastName": "Holmes", 
    "number": "0487345643", 
    "likes": ["Intriguing Cases", "Violin"] 
}, 
{ 
    "firstName": "Kristian", 
    "lastName": "Vos", 
    "number": "unknown", 
    "likes": ["Javascript", "Gaming", "Foxes"] 
}]; 
function lookUpProfile(firstName, prop){ 
for (var i = 0; i < contacts.length; i++){ 
if (firstName === contacts[i].firstName) { 
if (contacts[i][prop]) { 
    return contacts[i][prop]; 
} else { 
    return "No such property"; 
    } 
} 
} 
return "No such contact"; 
} 
lookUpProfile("Akira", "likes"); 

此代碼運行完美。但如果我使用if(firstName === contacts [i] [firstName])而不是if(firstName === contacts [i] .firstName),它不起作用。爲什麼?由於點或括號都可用於訪問對象屬性。爲什麼if語句不接受括號記號而不是點記號?

+3

可能重複[JavaScript屬性訪問:點符號與括號?](http://stackoverflow.com/questions/4968406/javascript-property-access-dot-notation-vs-brackets) – Thilo

+0

同意重複我認爲這個答案更適合你的問題:http://stackoverflow.com/a/4968460/1695393 – dubes

回答

0

括號爲變量。如果你想用字符串來使用它們,你可以,但是你必須引用它們:contacts[i]['firstName']。但除非屬性名稱包含受限字符(如另一個點或空格),否則這很愚蠢。

請注意,您已將其與i(這是一個變量)一起使用以獲取第i個元素(而不是名爲i的屬性)。

相關問題