通过给定一个获得另一个JSON对象属性

时间:2018-07-13 11:19:34

标签: javascript json

我有这样的JSON对象:

{
    "id": 12345,
    "fullname": "Kevin Johnson",
    "usernames": ["kevin123", "kevinj", "kjohnson"]
}

现在,如果我知道该人的ID,我想从JSON获取其用户名和全名。另外,如果我知道此人的用户名之一,则希望获得其ID和全名。如何获得必要的信息?

2 个答案:

答案 0 :(得分:4)

两种情况都可以使用Array.find()

通过ID获取全名和用户名

var obj = [
  {
    "id": 12345,
    "fullname": "Kevin Johnson",
    "usernames": ["kevin123", "kevinj", "kjohnson"]
  },
  {
    "id": 123456,
    "fullname": "Mark Johnson",
    "usernames": ["Mark123", "Markj", "12Mark"]
  }
];

var id = 123456;
var resObj = obj.find(item => item.id === id);
if(resObj){
  console.log('Full name ', resObj.fullname);
  console.log('usernames ', resObj.usernames);
} else {
  console.log('No user found!');
}
  

从用户名获取ID和全名

var obj = [
  {
    "id": 12345,
    "fullname": "Kevin Johnson",
    "usernames": ["kevin123", "kevinj", "kjohnson"]
  },
  {
    "id": 123456,
    "fullname": "Mark Johnson",
    "usernames": ["Mark123", "Markj", "12Mark"]
  }
];

var username = 'kevinj';
var resObj = obj.find(item => item.usernames.includes(username));
if(resObj){
  console.log('Full name ', resObj.fullname);
  console.log('id ', resObj.id);
} else {
  console.log('No user found!');
}

答案 1 :(得分:3)

要查找给定ID的全名和用户名:

var data = JSON.parse(your_json_string_here);
var person = data.find( x => x.id == **some_user_id**);
var fullName = person.fullname;
var usernames = person.usernames;

要从用户名中查找ID和全名:

var person = data.find( x => x.usernames.indexOf(**some_user_name**) > 0 );