您的位置:首页 > Web前端 > JavaScript

属性是否存在的判断

2016-07-11 16:48 351 查看
今天在做FreeCodeCamp的Profile Lookup时,test一直不正确,最后通过代码如下:

//Setup
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 lookUp(firstName, prop){
// Only change code below this line
var back;
for(var i=0; i<contacts.length; i++){
if(contacts[i].firstName == firstName && (prop in contacts[i])){
back = contacts[i][prop];
break;
}
if(contacts[i].firstName != firstName && (prop in contacts[i])){
back = "No such contact";
}
if(contacts[i].firstName == firstName && !(prop in contacts[i])){
back = "No such property";
break;
}
}
return back;
// Only change code above this line
}

// Change these values to test your function
lookUp("Akira", "address");


初始代码是这样子的:

function lookUp(firstName, prop){
// Only change code below this line
var back;
for(var i=0; i<contacts.length; i++){
if(contacts[i].firstName == firstName && contacts[i][prop] !== null){
back = contacts[i][prop];
break;
}
if(contacts[i].firstName != firstName && (prop in contacts[i])){
back = "No such contact";
}
if(contacts[i].firstName == firstName && !(prop in contacts[i])){
back = "No such property";
break;
}
}
return back;
// Only change code above this line
}


搞混了属性值和属性是否存在的判断。

期间在判断prop属性是否存在还使用了另外几种判断方法:

循环遍历对象的属性

in 方法

它可以判断不存在的属性和存在的属性但其值为undefined

是否为undefined

当属性存在并值为undefined时无法判断

简单的一点心得,细水长流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript 踩坑