从对象的值获取父对象的名称

时间:2018-10-12 10:33:06

标签: javascript javascript-objects

这听起来真的很简单,但是我找不到简单的答案。

我有一个对象:

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

我的电话号码是9898。结果如何获得“ Paul”?

6 个答案:

答案 0 :(得分:4)

只需使用Object.keys()和find()

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);

答案 1 :(得分:3)

您可以在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)

答案 2 :(得分:2)

您可以尝试以下任一方法:-

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);

答案 3 :(得分:1)

使用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);

答案 4 :(得分:0)

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)

答案 5 :(得分:0)

最好创建一个函数,这样您就可以重用代码。 这段代码通过对象,并比较手机,直到发现巧合为止。

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'))