#javascript #json #object #destructuring
#javascript #json #объект #деструктурирование
Вопрос:
У меня есть следующий объект:
const john = {
family: [
{ firstName: 'david', secondName: 'jana' },
{ firstName: 'eyal', secondName: 'shani ' },
],
};
Я хочу получить строку ‘david’ за одну операцию. Итак, я попробовал следующий код:
const { family:[0]{firstName}}} = john;
Но я получаю сообщение об ошибке :
«Деструктурирующие выражения могут иметь только ссылки на идентификаторы»
Может кто-нибудь сказать мне простыми словами (потому что я новичок в языке), что я делаю не так?
Комментарии:
1. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Ответ №1:
Чтобы извлечь глубоко вложенное значение с помощью деструктурирования, синтаксис почти идентичен синтаксису при объявлении объекта с этими свойствами. family:[0]
недопустимый синтаксис — вместо этого вам нужно окружить содержимое family
в разделителях массива:
const john = {
family: [{
firstName: 'david',
secondName: 'jana'
},
{
firstName: 'eyal',
secondName: 'shani '
},
],
};
const { family:[{firstName}]} = john;
console.log(firstName);
Но я бы настоятельно не рекомендовал использовать вложенную деструктуризацию подобным образом. Это так трудно писать, читать и понимать. Лучше использовать обычную точечную нотацию, по крайней мере, для внешнего доступа, например
const john = {
family: [{
firstName: 'david',
secondName: 'jana'
},
{
firstName: 'eyal',
secondName: 'shani '
},
],
};
const { firstName } = john.family[0];
console.log(firstName);
Комментарии:
1. прежде всего, спасибо! Во-вторых, почему { family:[{FirstName}]} переходит к первому элементу массива, а не ко второму элементу?
2. Потому
{}
что это первый элемент внутри[]
скобок. Если бы вы это сделали[, { firstName }]
, вы бы извлекали данные из второго элемента массива.