Деструктурирующий запасной вариант для предотвращения неопределенной ошибки? - PullRequest
1 голос
/ 22 апреля 2020

У меня есть список массивов, которые я делаю так:

const { id } = myArray.find(
        (obj) => obj === true)

Если id отсутствует, это выдаст ошибку. Как предотвратить ошибки при одновременном использовании деструктуризации? Я хочу сохранить логику c в одну строку.

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема здесь в следующем: .find() возвращает undefined, если условие не выполнено:

Значение первого элемента в массиве, удовлетворяющего предусмотрена функция тестирования. В противном случае возвращается undefined.

Поэтому, вероятно, вы можете использовать оператор ||, чтобы проверить, есть ли у вас какое-либо значение, возвращаемое из .find(), или вы можете вместо него заменить пустой объект {} на правая сторона оператора.

Вероятно, вариант для однострочника следующий:

const myArray = [
  { id: 12 },
  { id: 13 },
  { id: 14 }
];

const { id } = myArray.find(e => e.id === 17) || {};

console.log(id);

Таким образом, вы можете деструктурировать свойство id, даже если оно вернуло undefined.

Также, если вам нужно, вы можете добавить значение по умолчанию к ваш оператор деструктурирования, основанный на документации, которая гласит для оператора деструктурирования следующим образом:

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

const { id = 10 } = {};

console.log(id);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...