我想知道是否有一种方法可以解构分配给变量的数组,然后将值传递给同一行中的另一个解构的变量。请在下面查看我打算做什么:

const { prop } = [a] = chips.filter(x => x.id == 1);

通常,我会用两行代码来完成此操作,如下所示:
const [a] = chips.filter(x => x.id == 1);
const { prop } = a;

我可以单行吗?

最佳答案

当然,只需将{ prop }放在a当前所在的位置即可:

const [{ prop }] = chips.filter(x => x.id == 1);

const chips = [
  { id: 1, prop: 'foo'},
  { id: 1, prop: 'bar'},
  { id: 1, prop: 'baz'}
];
const [{ prop }] = chips.filter(x => x.id === 1);
console.log(prop);


(请注意,如果可能,您也可以考虑对===使用严格的相等性比较)

但是,如果您只想使用数组中的第一个匹配元素,则使用.find而不是.filter更为合适,因为.find返回找到的元素,而filter返回一个数组(您并未真正使用):

const chips = [
  { id: 1, prop: 'foo'},
  { id: 1, prop: 'bar'},
  { id: 1, prop: 'baz'}
];
const { prop } = chips.find(x => x.id === 1);
console.log(prop);

关于javascript - 我可以为变量分配解构数组分配并对其进行解构吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53368172/

10-11 14:07