【发布时间】:2017-07-26 20:11:58
【问题描述】:
这是来自 FreeCodeCamp 的一个练习,我想知道这个解决方案是否足够好,或者我应该以不同的方式解决它:
锻炼:
我们的联系人列表中有一组代表不同人的对象。
已经为您预先编写了一个以 firstName 和一个属性 (prop) 作为参数的 lookUpProfile 函数。
该函数应检查 firstName 是否是实际联系人的名字,并且给定的属性 (prop) 是该联系人的属性。
如果两者都为真,则返回该属性的“值”。
如果 firstName 不对应任何联系人,则返回“No such contact”
如果 prop 不对应任何有效属性,则返回“No such property”
解决方案:
//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"]
}
];
// SOLUTION
function lookUpProfile(firstName, prop) {
var checkName = "";
for (var i = 0; i < contacts.length; i++) {
if (contacts[i].firstName === firstName) {
checkName = contacts[i].firstName;
break;
} else {
checkName = "No such contact";
}
}
var checkProp = "";
for (var j = 0; j < contacts.length; j++) {
if ((contacts[j].hasOwnProperty(prop)) === true && checkName != "No such contact") {
checkProp = contacts[i][(prop)];
break;
} else {
checkProp = "No such property";
}
}
switch (checkName) {
case "No such contact":
console.log (checkName); // I have put there return instead of console.log.
default:
console.log (checkProp); // I have put there return instead of console.log.
}
// Only change code above this line
}
// Change these values to test your function
lookUpProfile("Sherlock", "likes");
另一个重要问题: 我花了大约 2.5 小时,所以解决了这个问题(我是初学者,每次学习循环,我都在挣扎)。
这是正常的还是我之前应该找到解决办法?
谢谢!!学习编程很困难,但很有意义!!
【问题讨论】:
-
这个应该可以移到Code Review
-
这是一个有趣的问题。但是,此站点并不是提出此类问题的最佳场所。 Stack Overflow 专门针对代码不起作用。相反,您应该将问题发布到Code Review
-
Opps 对不起,甚至不知道代码审查网页的存在。
标签: javascript arrays javascript-objects