繁体   English   中英

Javascript 配置文件查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM