我有一个对象数组(contacts),我需要编写一个函数来检查firstName (函数的第一个参数)是否是实际联系人的firstName给定属性(prop是函数的第二个参数)是该联系人的属性。如果两者都为真,则返回该属性的“值”。
如果 firstName 与任何联系人不对应,则返回“没有此类联系”
如果 prop 与任何有效的属性不对应,则返回“No such property”
我知道我需要做什么,我写的是sudo,但是在实际的JavaScript中编写它我有阻塞。
到目前为止我写的内容:
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(firstName, prop) {
var value;
for (i = 0; i < 2; i++) {
if (contacts[i].firstName === true && contacts[i].prop === true) {
value = contacts[i].prop;
return value;
}
}
}
答案 0 :(得分:1)
一旦找到给定firstName
的联系人,就可以使用break out of loop,然后检查传递的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(firstName, prop) {
var value = undefined;
for (i = 0; i < contacts.length; i++) {
if (contacts[i].firstName === firstName) {
value = contacts[i];
break;
}
}
if(!value) {
return 'No such contact';
}
if(!(prop in value)) {
return 'No such property';
}
return value[prop];
}
console.log(lookUpProfile('Sherlock', 'likes'));
console.log(lookUpProfile('Harry', 'friends'));
console.log(lookUpProfile('John', 'likes'));
答案 1 :(得分:0)
您可以使用array.prototype.find
检查数组中是否存在联系人:
var contacts = [{firstname: "aaa", prop1: "val1"}, {firstname: "bbb", prop2: "val2"}];
function yourFunc(firstname, prop) {
var ct = contacts.find(c => c.firstname === firstname);
return ct ? ct[prop] || "No such property" : "No such contact";
}
console.log(yourFunc("aaa", 'prop2'));
console.log(yourFunc("aaa", 'prop1'));
console.log(yourFunc("bbb", 'prop2'));
console.log(yourFunc("bbb", 'prop1'));
console.log(yourFunc("ccc", 'prop1'));
&#13;
答案 2 :(得分:0)
function lookUpProfile(firstName, prop) {
var contact;
for (i = 0; i < contacts.length; i++) {
if (contacts[i].firstName === firstName) {
contact = contacts[i];
break;
}
}
if(!contact) {
return 'No such contact';
}
if(!contact[prop]) {
return 'No such property';
}
return contact[prop];
}
答案 3 :(得分:0)
使用For循环语句,它应该是这样的:
function lookUpProfile(firstName, prop) {
var contact;
for (var i = 0; i < contacts.length; i++) {
if (contacts[i].firstName === firstName){
contact = contacts[i];
break;
}
}
return contact ? ( contact[prop] ? contact[prop] : 'No such property') : 'No such contact';
}