是否可以分解某些属性,并且还可以在地图回调函数的单个赋值表达式内分配/传递整个对象?

问题描述 投票:2回答:1

例如,说我正在映射对象数组:

arrayOfPeople.map( ({ firstname, lastname }) => {
  // 2 variables scoped here: firstname, lastname
})

我知道我可以(类似地)完成以下操作:

arrayOfPeople.map(person => {
  const { firstname, lastname } = person
  // except now I actually have 3 variables scoped here: person, firstname, lastname
})

是否像第二个示例中那样分配所有3个变量(即属性和整个对象)的语法,但是赋值/解构发生在paramaters所在的括号内?

也许是这样:

arrayOfPeople.map( ({ person = { /* ...entireObject */ }, firstname, lastname }) => {
 // 3 variables scoped here: person, firstname, lastname
})

我意识到这是一行代码的区别,但是我很好奇这是否可行。

谢谢

编辑:为澄清起见,在数组中被映射的对象(即“人”)具有的属性不仅仅是名字和姓氏,而且我想访问整个对象,包括名字和姓氏。

javascript ecmascript-6 destructuring
1个回答
0
投票

没有办法按原样获取对象,并在单个语句中对其进行分解。

但是,如果您只想要其未变形的属性,而不想要已变形的属性,对象的原型等;那么您可以使用其余语法(使用熟悉的...表示法):

arrayOfPeople.map( ({ firstname, lastname, ...rest}) => {
  // 3 variables scoped here: firstname, lastname, rest
})
© www.soinside.com 2019 - 2024. All rights reserved.