Вы также можете попробовать получить изображение, если хотите, исходя из высоты или ширины
https://graph.facebook.com/user_id/picture?height=
ИЛИ
https://graph.facebook.com/user_id/picture?width=
Значения по умолчанию в пикселях вам просто нужно указать значение int
Если вы уверены, что response
содержит как объект с ключом given_name
, так и объект с ключом family_name
, вы можете написать так:
const newObj = {
'given_name': response.filter(el => el.Name ==='given_name')[0].Value,
'family_name': response.filter(el => el.Name ==='family_name')[0].Value,
}
Есть скрипка:
let response = [
{
"Name": "hobby",
"Value": "poker"
},
{
"Name": "privacy_id",
"Value": "1112"
}, {
"Name": "given_name",
"Value": "Mike"
},
{
"Name": "family_name",
"Value": "Brown"
},
{
"Name": "email",
"Value": "test@email.com"
}
]
const newObj = {
'given_name': response.filter(el => el.Name ==='given_name')[0].Value,
'family_name': response.filter(el => el.Name ==='family_name')[0].Value,
}
console.log(newObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Это хороший вариант использования для Array.prototype.reduce , так как вам нужно преобразовать массив во что-то, что является объектом в вашем случае:
const newObj = response.reduce((acc, curr) => {
acc[curr.Name] = curr.Value;
return acc;
}, {});
Это будет преобразовывать:
const response = [
{
'Name': 'given_name',
'Value': 'Mike'
},
{
'Name': 'family_name',
'Value': 'Brown'
}
]
в:
{
'given_name': 'Mike',
'family_name': 'Brown'
}
Теперь, если вы хотите изменить наименование ключа, вы можете использовать какое-то отображение:
const NameMapping = {
given_name: 'firstName',
family_name: 'lastName'
};
const response = [
{
'Name': 'given_name',
'Value': 'Mike'
},
{
'Name': 'family_name',
'Value': 'Brown'
}
]
const newObj = response.reduce((acc, curr) => {
if (NameMapping[curr.Name] === undefined)
return acc;
acc[NameMapping[curr.Name]] = curr.Value;
return acc;
}, {});
Итак, ваш newObj
будет выглядеть так:
{
firstName: 'Mike',
familyName: 'Brown'
}