javascript - 对象数组值检索
问题描述
在这个 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");
解决方案
只需从检查联系人是否存在开始按顺序进行如果不存在则返回结果:没有配置文件
然后接下来使用 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"))
推荐阅读
- python - 尝试对电影网站观看列表进行一次性网络抓取 (Mubi)
- react-native - npx:在 58.205 秒内安装 624 意外令牌 {
- amazon-ec2 - 如何编辑 /etc/jitsi/jibri/jibri.conf 以在 jibri 上录制 jitsi,因为 /etc/jitsi/jibri/config.json 不再存在
- python - Python pyautogui报错显示鼠标位置
- c# - Oracle - 选择一个布尔值?从 MYTABLE 中选择 COUNT(*) > 0
- javascript - 无法使用 Walmart API 更新提要
- java - 在 Spring 中使用 @Component 注解创建特定类的多个对象
- java - Android Java如何在RelativeLayout中填充父级
- php - 难以在 wordpress single.php 中显示动态侧边栏
- apache - 仅在顶层目录中使用 mode_rewrite 剥离 .html