Я возвратил два значения, но консоль отображает только одно значение .. что не так с моим кодом? - PullRequest
0 голосов
/ 11 января 2020

В приведенной ниже функции я ожидал возврата двух значений, но получаю только одно значение в консоли.

var contacts =[
            {"firstname": "karthi","lastname": "kosuri","mobile": "9999666888889","likes":["pizza","icecream","curdrice"]},
            {"firstname": "sathvik","lastname": "kosuri","mobile": "9849488486","likes":["biryani","vada","idly"]},
            {"firstname": "neelu","lastname": "kosuri","mobile": "892736636","likes":["annam","pappu","charu"]},
            {"firstname": "kesav","lastname": "kosuri","mobile": "748484848484","likes":["kudithi","sambar","bokka"]}
        ];

    function contactlookup(name, prop){
        for( var i=0; i< contacts.length;i++){
            if(contacts[i].firstname=== name){
                return contacts[i][prop];
            }
        }
        return "no such name";
    }
    var data = contactlookup("karthi", "kosuri");
    console.log(data); 

Ответы [ 3 ]

0 голосов
/ 11 января 2020

Используйте «return {name: name, prop: prop};» вместо "return name && prop", потому что одно значение должно быть возвращено во время вызова функции

var contacts =[
    {
        "firstname": "karthi",
        "lastname": "kosuri",
        "mobile": "9999666888889",
        "likes":["pizza","icecream","curdrice"]
    },
    {
        "firstname": "sathvik",
        "lastname": "kosuri",
        "mobile": "9849488486",
        "likes":["biryani","vada","idly"] 
    },
    {
        "firstname": "neelu",
        "lastname": "kosuri",
        "mobile": "892736636",
        "likes":["annam","pappu","charu"]
    },
    {
    "firstname": "kesav",
    "lastname": "kosuri",
    "mobile": "748484848484",
    "likes":["kudithi","sambar","bokka"]
    }
];
// newcontact = JSON.stringify(contacts);
// console.log(newcontact)
function contactlookup(name, prop){
    for( var i=0; i< contacts.length;i++){
if(contacts[i].firstname=== name && contacts[i].lastname=== prop){
    **return {name:name,prop:prop}**
}

    }
return "no such name";

}
var data = contactlookup("karthi", "kosuri");
console.log(data);
0 голосов
/ 12 января 2020

использовать массив найти https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

var contacts = 
    [ { firstname: 'karthi'
      , lastname:  'kosuri'
      , mobile:    '9999666888889'
      , likes:     [ 'pizza', 'icecream', 'curdrice' ] 
      } 
    , { firstname: 'sathvik'
      , lastname:  'kosuri'
      , mobile:    '9849488486'
      , likes:     [ 'biryani', 'vada', 'idly' ] 
      } 
    , { firstname: 'neelu'
      , lastname:  'kosuri'
      , mobile:    '892736636'
      , likes:     [ 'annam', 'pappu', 'charu'] 
      } 
    , { firstname: 'kesav'
      , lastname:  'kosuri'
      , mobile:    '748484848484'
      , likes:     [ 'kudithi', 'sambar', 'bokka'] 
      } 
    ];

function contactlookup(name, prop)
{
  let lookup = contacts.find(elm=>elm.firstname===name && elm.lastname===prop )
  return (lookup)? lookup : 'no such name' 
}


var data = contactlookup('karthi', 'kosuri')

console.log(data); 
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 11 января 2020

Вы можете вернуть только одно значение.

return name && prop;

Возвращает результат оценки name && prop (см. Логические операторы в JavaScript - как вы их используете? ), что будет либо значением name (если name - фальсификация) или prop.

Ближайшим к вам может прийти к возврату нескольких значений, это поместить их в структуру данных и вернуть эту структуру данных.

например, массив:

return [name, prop];

или объект:

return { name, prop };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...