2016-09-26 112 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的属性)。

相关问题