JavaScript: 当数组为空时解构对象数组时出错

JavaScript: Error when destructuring an array of objects when the array is empty

解决这种情况的最干净的方法是什么?

考虑到我有一个对象数组:

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'

我发现了一些 articles/docs 解释了在仅解构一个对象时如何处理错误,但如果它是一个对象数组,并且该数组为空,则不会。

您可以为未定义的属性设置默认值

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

console.log(name); // ""

您可以设置一个默认值

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

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

你应该这样声明数组。所以默认情况下它将是一个空的对象数组。否则会抛出那个错误。

let originalArray = [{}];

如果您知道您将拥有多少属性,您也可以声明一个默认值。

let originalArray = [];

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

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