Получение имени родительского объекта из значения объекта - PullRequest
0 голосов
/ 12 октября 2018

Это кажется действительно простым, но я не смог найти простой ответ.

У меня есть объект:

var obj = {
        'John': {'phone':'7326', 'age': '23'},
        'Paul': {'phone': '9898', 'age': '12'},
        'Lucy': {'phone': '1122', 'age': '24'}
}

У меня есть номер телефона 9898. Как мне получить 'Пол 'как результат?

Ответы [ 6 ]

0 голосов
/ 12 октября 2018

Вы можете попробовать любой из этих: -

for(var key in obj){
   if(obj[key].phone == "9898") {
      console.log(key);
   }
}

или

const key= Object.keys(obj).find(e => obj[e].phone === '9898');
console.log(key);
0 голосов
/ 12 октября 2018

Лучше создать функцию, таким образом вы сможете повторно использовать код.Этот код проходит через объект и сравнивает телефон, пока не обнаружит совпадение.

var obj = {
    'John': {'phone':'7326', 'age': '23'},
    'Paul': {'phone': '9898', 'age': '12'},
    'Lucy': {'phone': '1122', 'age': '24'}
}

function searchPhone(obj, phone){
  for(var key in obj){
    if(obj[key]['phone'] == phone){
        return key
      }
  }
}

console.log(searchPhone(obj, '9898'))
0 голосов
/ 12 октября 2018

var obj = {
        'John': {'phone':'7326', 'age': '23'},
        'Paul': {'phone': '9898', 'age': '12'},
        'Lucy': {'phone': '1122', 'age': '24'}
}

let givenPhone = '9898'
let userName = 'UNKNOWN';

Object.entries(obj).forEach(([user, {phone}])=> {
  if(phone === givenPhone) userName = user;
})

console.log(userName)
0 голосов
/ 12 октября 2018

Просто используйте Object.keys () и найдите ()

var obj = {
        'John': {'phone':'7326', 'age': '23'},
        'Paul': {'phone': '9898', 'age': '12'},
        'Lucy': {'phone': '1122', 'age': '24'}
}

const res = Object.keys(obj).find(e => obj[e].phone === '9898');
console.log(res);
0 голосов
/ 12 октября 2018

Делать с Object.keys и массивом находить:

var obj = {
        'John': {'phone':'7326', 'age': '23'},
        'Paul': {'phone': '9898', 'age': '12'},
        'Lucy': {'phone': '1122', 'age': '24'}
};
var phone_to_search = '9898';
var result = Object.keys(obj).find(current=>{
  if (obj[current]['phone']===phone_to_search)
    return current;
});
console.log(result);
0 голосов
/ 12 октября 2018

Вы можете использовать find метод на Object.entries.

var obj = {'John': {'phone':'7326', 'age': '23'},'Paul': {'phone': '9898', 'age': '12'},'Lucy': {'phone': '1122', 'age': '24'}}
var [name] = Object.entries(obj).find(([_, {phone}]) => phone == 9898) || []
console.log(name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...