首页 > 解决方案 > 对象数组值检索

问题描述

在这个 freecodecamp 练习中,如果输入了未知联系人,您应该返回“No such contact”。如果输入了无效属性,则“没有此类属性”。我能够提取各种联系人信息,但我很困惑如何适应我刚才提到的测试。每次我这样做都会搞砸我的 if 语句。对此有什么想法吗?

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) {

  var myStr = '';


  for (var i = 0; i < contacts.length; i++) {

    if (contacts[i].firstName === name) {
      myStr = contacts[i][prop];
    }

  }


  return myStr;
}

lookUpProfile("Harry", "likes");

标签: javascript

解决方案


只需从检查联系人是否存在开始按顺序进行如果不存在则返回结果:没有配置文件

然后接下来使用 hasOwnProp 检查道具,如果不存在则返回:No 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){
  const result = contacts.find(item => item.firstName === name)
  
  if(!result) return 'No such contact'
  if(!result.hasOwnProperty(prop)) return 'No such prop'
  
  return result;
}

console.log(lookUpProfile("Harry1", "likes1"))
console.log(lookUpProfile("Harry", "likes"))
console.log(lookUpProfile("Harry", "likes1"))


推荐阅读