ES6如何一行实现包含数组首元素的多层嵌套结构复杂解构?
问题解答
ES6完全支持一行完成这种包含数组元素的复杂嵌套解构,你编写的代码无法运行是存在两个语法错误,并非该特性不支持。
正确的一行解构写法
const { nestedArray: [{ stuff }], nestedObj: { key1, key2 } } = obj
代码报错原因
- 属性名不匹配:原对象的数组属性名为
nestedArray而非array,嵌套对象属性名为nestedObj而非nestedObject,解构时左侧的键名必须和原对象的属性完全对应才能正确取值。 - 数组元素解构语法错误:对象解构的左侧不能直接用
数组[下标]的写法,要提取数组指定位置的元素,需要在对应属性的位置使用和原结构匹配的数组解构语法:这里要取nestedArray的第0项,所以写[{ stuff }],就会自动把数组第0个元素的stuff属性提取为变量。
解构的核心规则就是左侧的结构和原数据的结构完全对应,不管是对象套数组、数组套对象、还是任意层级的嵌套,都可以按照这个规则写在一行里完成解构。
内容的提问来源于stack exchange,提问作者PsiKai
相关产品推荐
相关产品推荐

