1. ホーム
  2. javascript

[解決済み] javascriptのルックアップ機能

2022-02-10 04:13:01

質問

私はある課題を解決しようとしているのですが、ここに問題集があります。

を表すオブジェクトの配列があります。 連絡先リスト

firstNameとプロパティ(prop)を受け取るlookUpProfile関数があります。 引数があらかじめ書かれています。

この関数は、firstName が実際のコンタクトの firstName と、与えられたプロパティ (prop) は、そのコンタクトのプロパティです。

両方が真であれば、そのプロパティの "value" を返します。

firstNameがどの連絡先にも該当しない場合は、"No such contact"

prop が有効なプロパティに対応しない場合、"No を返します。 そのようなプロパティはありません(quot)。

私の試み

//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(firstName, prop){
// Only change code below this line
for(var i =0;i<contacts.length;i++){
  if (contacts[i].firstName===firstName && contacts[i].hasOwnProperty(prop)===true){
    return contacts[i][prop];
  }
    else if (contacts[i].firstName===undefined){
return "No such contact";
    }
  else if (contacts[i].hasOwnProperty===false){
    return "No such property";
  }

}

// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Akira", "likes");

lookUpProfile関数に存在しない値を入力すると、undefinedが返されるだけです。

例えば lookUpProfile("Donald", "likes") のような感じです。

<. 未定義

修正にご協力お願いします。 また、コメントを残すことができます このgist

ありがとうございます

解決方法は?

ループの最初の条件は、名前が等しいかどうかをチェックすることです。もしそれが満たされるなら、次にそのプロパティが存在するかどうかをチェックする必要があります。 もし存在するなら、その値を返します。 no such property .そのような名前が見つからない場合は、ループから抜け出し、次のように返すことができます。 no such contact .

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){
// Only change code below this line
for(var i =0;i<contacts.length;i++){
  if (contacts[i].firstName===firstName){
  if(contacts[i].hasOwnProperty(prop)===true){
    return contacts[i][prop];
  }

  else {
    return "No such property";
  }

}
}
return "No such contact";
}
//No such contact
console.log(lookUpProfile("Donald", "likes"));
//No such property
console.log(lookUpProfile("Sherlock", "locks"));
//returns value of property
console.log(lookUpProfile("Kristian", "likes"));