Как извлечь объект из другого объекта?

Вы также можете попробовать получить изображение, если хотите, исходя из высоты или ширины

https://graph.facebook.com/user_id/picture?height=

ИЛИ

https://graph.facebook.com/user_id/picture?width=

Значения по умолчанию в пикселях вам просто нужно указать значение int

1
задан progx 5 March 2019 в 15:54
поделиться

2 ответа

Если вы уверены, что 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>

0
ответ дан Jolly 5 March 2019 в 15:54
поделиться

Это хороший вариант использования для 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'
}
0
ответ дан Saraband 5 March 2019 в 15:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: