Проблема здесь в следующем: .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);
Надеюсь, это поможет!