JavaScript: ошибка при деструкции массива объектов, когда массив пуст - PullRequest
1 голос
/ 25 сентября 2019

Какой самый чистый способ обойти этот сценарий?

Учитывая, что у меня есть массив объектов:

let originalArray = [{
  personName: 'Ben'
}];

Я могу деструктурировать следующим образом:

const [{
  personName: name
}] = originalArray;

console.log(name); // "Ben"

Однако, если originalArray пусто ...

let originalArray = [];

const [{
  personName: name
}] = originalArray;

Я получаю эту ошибку

Uncaught TypeError: Cannot destructure property `personName` of 'undefined' or 'null'

Я нашел несколько статей / документов, объясняющихкак обрабатывать ошибки при деструктурировании только объекта, но не в том случае, если это массив объектов и этот массив пуст.

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Вы можете установить значения по умолчанию для неопределенных свойств

const [{
  personName: name = ''
} = {}] = originalArray;

console.log(name); // ""
0 голосов
/ 25 сентября 2019

Вы должны объявить массив следующим образом.Так что это будет пустой массив объектов по умолчанию.В противном случае вы получите эту ошибку.

let originalArray = [{}];

Вы также можете объявить значение по умолчанию, если знаете, сколько у вас будет свойств.

let originalArray = [];

const [{
 personName: name = 'ben',
 personAge: age = '23'
} = {}] = originalArray;

console.log(name); // "Ben"
console.log(age); // "23"
0 голосов
/ 25 сентября 2019

Вы можете установить значение по умолчанию

var [{ personName: name = 'default' } = {}] = [{ personName: 'Ben' }];
console.log(name);

var [{ personName: name = 'default' } = {}] = [];
console.log(name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...