如何对含嵌套对象数组的对象解构,获取指定元素属性?
解决嵌套对象与数组的解构问题
你当前的问题出在获取enemyTitle的方式上——你把enemies数组当成普通对象来解构title属性,但实际上title是数组第4个元素(索引3)里的属性。
可以把所有需要的属性合并到一次解构操作中,无需重复拆分protagonist:
const { title, protagonist: { name: protagonistName, enemies: [ , , , { name: enemyName, title: enemyTitle } ] } } = info;
解构逻辑说明:
enemies: [ , , , { ... } ]里的三个逗号用于跳过数组前三个元素,直接定位到索引为3的目标元素,再解构它的name和title属性,分别赋值给enemyName和enemyTitle- 顶层的
title直接解构获取 protagonist的name属性解构后重命名为protagonistName
修正后的完整函数:
function nestedArrayAndObject() { const info = { title: 'Once Upon a Time', protagonist: { name: 'Emma Swan', enemies: [ {name: 'Regina Mills', title: 'Evil Queen'}, {name: 'Cora Mills', title: 'Queen of Hearts'}, {name: 'Peter Pan', title: `The boy who wouldn't grow up`}, {name: 'Zelena', title: 'The Wicked Witch'}, ], }, } const { title, protagonist: { name: protagonistName, enemies: [ , , , { name: enemyName, title: enemyTitle } ] } } = info; return `${enemyName} ${enemyTitle} is an enemy to ${protagonistName} in ${title}`; } nestedArrayAndObject(); // 返回 "Zelena The Wicked Witch is an enemy to Emma Swan in Once Upon a Time"
内容的提问来源于stack exchange,提问作者Adnan
相关产品推荐
相关产品推荐

