您好,我正在尝试解决以下问题:
我的函数应执行以下操作:
检查姓名是否是实际联系人的名字,并且给定属性(prop)是该联系人的属性。
如果两者都为true,则返回该属性的“值”。
如果姓名与任何联系人都不对应,则返回“没有此类联系人”。
如果prop不符合与姓名匹配的联系人的任何有效属性,则返回“无此属性”。
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){
contacts.forEach((block) => {
((name === block.firstName) && (block.hasOwnProperty(prop))) ? block[prop] : "no such property"
})
return "no such contact"
}
lookUpProfile("Akira", "likes");
我不确定为什么它不起作用,我试图做一个三元声明并使用短路运算符。
提前谢谢
答案 0 :(得分:1)
首先使用find方法检索联系人。然后,如果找到了某些内容,则可以继续检查它是否具有'prop'属性。
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 found = contacts.find( (block) => {
return (block.firstName === name)
});
if ( found !== undefined ){
if (found.hasOwnProperty(prop)){
return found[prop];
} else {
return 'No such property'
}
} else {
return 'No such contact';
}
}
lookUpProfile("Sherlock", "likes");