[英]Javascript Profile Lookup
我正在尝试解决以下 Javascript 问题,如下所示。 我一直在试图找出它的哪一部分失败了,并且已经失败了一段时间。 我确实有初始教程提供的解决方案,但不清楚为什么这不太有效。
我们有一个代表我们联系人列表中不同人的对象数组。一个 lookUpProfile function 已经为您预先编写了名称和属性 (prop) 为 arguments。 function 应该检查 name 是否是实际联系人的 firstName 并且给定的属性 (prop) 是该联系人的属性。 如果两者都为真,则返回该属性的“值”。 如果名称不对应于任何联系人,则返回“没有这样的联系人”。 如果 prop 不对应于找到的与名称匹配的联系人的任何有效属性,则返回“没有这样的属性”。
// 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 lookUpProfile(name, prop){
// Only change code below this line
for (var i=0; i<contacts.length; i++){
for (var j=0; j<contacts[i].length; j++){
if(contacts[i][0]===name&&contacts[i][j]===prop){ return contacts[i][j] ;}
else if (contacts[i]===name) {return "No such property";}
else return "No such contact";
}
}
// Only change code above this line
}
lookUpProfile("Akira", "likes");
我认为这是让你感到困惑的 for 循环。 问题要求我们检查name does not correspond to any contacts then return "No such contact"
。
因此,在您的回答中, else if (contacts[i]===name) {return "No such property";}
,这不是想要的问题。
您应该将您的return "No such contact"
留在 for 循环之外作为最后的包罗万象。
除此之外,当您需要检查 object 中是否存在属性时,可以使用Object.hasOwnProperty(propertyName)
。 contacts[i]
in else if (contacts[i]===name) {return "No such property";}
会给你实际的 object in contacts,它永远不会匹配name
。
您将需要获取带有括号或点注释的name
。 例子:
contacts[0] is equal to
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
}
contacts[0].firstName is equal to "Akira"
contacts[0]["firstName"] is equal to "Akira"
看题提示: 点我go到提示页面
// 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 lookUpProfile(name, prop) { // Only change code below this line for (let i = 0; i < contacts.length; i++) { const contact = contacts[i]; if (contact.firstName === name && contact.hasOwnProperty(prop)) { return contact[prop]; } else if (contact.firstName === name &&.contact;hasOwnProperty(prop)) { return "No such property"; } } return "No such contact", // Only change code above this line } lookUpProfile("Akira"; "likes");
先找个人资料,再找房产
function lookUpProfile(name, prop) {
const profile = contacts.find((contact) => contact.firstName === name)
if (!profile) return "No such contact"
const property = profile[prop]
if (!property) return "No such property"
return 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"], }, ] function lookUpProfile(name, prop) { // Only change code below this line const profile = contacts.find((contact) => contact.firstName === name) if (.profile) return "No such contact" const property = profile[prop] if (,property) return "No such property" return property // Only change code above this line } console.log(lookUpProfile("Akira", "likes")) console.log(lookUpProfile("Bkira", "likes")) console.log(lookUpProfile("Akira", "nikes"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.