我尝试使用配置文件查找来完成任务。它应该搜索prop并返回他的值,如果它不能那么"没有这样的联系"或"没有这样的财产"依赖于条件 我不明白为什么最后一个条件(否则声明)没有表现。这是代码。
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) {
var i = 0;
while (contacts[i]) {
if (contacts[i].firstName === firstName && contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
}
i++;
}
if (!contacts.firstName) {
return "No such contact";
}
else {
return "No such property";
}
}
lookUpProfile("Akira", "address");`
它返回"没有这样的联系"虽然应该返回"没有这样的财产"。
答案 0 :(得分:1)
您可以遍历contacts
,如果找到匹配名字的联系人,则返回所需属性的值或"没有此类属性"。如果循环结束而没有返回任何值,则表示未找到联系人。
function lookUpProfile(firstName, prop) {
var i = 0,
contact;
for(i = 0; i< contacts.length; i++) {
contact = contacts[i];
if(contact.firstName === firstName) {
return contact.hasOwnProperty(prop) ? contact[prop] : "No such property";
}
}
return "No such contact";
}
JSBin: https://jsbin.com/pobunavacu/edit?js,console
编辑:(ES6版本)
如果您为没有IE或Opera的受控环境编写代码,您可以使用Javascript的ES6功能(在Chrome,Firefox和NodeJS中测试)更轻松地执行此操作:
function lookUpProfile(firstName, prop) {
return (contacts.find(contact => contact.firstName === firstName) || {[prop]: "No such contact"})[prop] || "No such property";
}
答案 1 :(得分:0)
if (!contacts.firstName)
总是假的
答案 2 :(得分:0)
这是你的功能看起来的方式
function lookUpProfile(firstName, prop){
var i = 0;
var a;
while(contacts[i]) {
if (contacts[i]["firstName"] === firstName && contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
}
else if (contacts[i]["firstName"] != firstName) {
a = "No Contact";
} else {
a= "No property";
return a;
}
i++;
}
return a;
}
答案 3 :(得分:0)
我更新了您的脚本,该脚本会返回No such property
。
function lookUpProfile(firstName, prop){
var i = 0, index = 0;
while(i < contacts.length) {
if (contacts[i].firstName == firstName) {
index++;
}
i++;
}
if (index > 0) {
if (!contacts[index][prop]) {
return "No such property";
}
} else {
return "No such contact";
}
}
console.log(lookUpProfile("Akira", "address")); //Output: No such property
console.log(lookUpProfile("John", "address")); //Output: No such contacts
希望也适合你。
答案 4 :(得分:0)
您可以保存标记以表示是否找到名称。 像这样:
function lookUpProfile(firstName, prop) {
var i = 0;
var nameflag = false;
while (contacts[i]) {
if (contacts[i].firstName === firstName && contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
}
if (contacts[i].firstName == firstname)
nameflag = true;
i++;
}
if (!nameflag) {
return "No such contact";
}
else {
return "No such property";
}
}
答案 5 :(得分:0)
你需要标志(布尔值),以解决你的问题
function lookUpProfile(firstName, prop) {
var contactExist = false;
var i = 0;
while (contacts[i]) {
if (contacts[i].firstName === firstName) {
if (contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
} else {
contactExist = true;
break;
}
}
i++;
}
if (!contactExist) {
return "No such contact";
}
else {
return "No such property";
}
}