我有这样的JSON对象:
{
"id": 12345,
"fullname": "Kevin Johnson",
"usernames": ["kevin123", "kevinj", "kjohnson"]
}
现在,如果我知道该人的ID,我想从JSON获取其用户名和全名。另外,如果我知道此人的用户名之一,则希望获得其ID和全名。如何获得必要的信息?
答案 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 );