使用ES6解构,是否有任何方法可以在赋值时解构嵌套对象?
这是一个快速代码示例,用于显示我的意思:
decltype(auto)
答案 0 :(得分:2)
是的,您可以使用ES6进行嵌套解构。 MDN gives you a nice example
let node = {
ItemTitle: 'Title',
ItemId: 5,
Menu: {
Item: [{
ItemId: 579
}]
}
}
let { Menu: { Item: [{ ItemId }] } } = node
console.log(ItemId) // 579
答案 1 :(得分:1)
您可以为嵌套级别重复相同的语法,就像对顶层进行解构一样:
根据您的评论进行编辑
我需要数组中的对象
let node = {
ItemTitle: 'Title',
ItemId: 5,
Menu: {Item: [{ItemId: 579}]}
}
let {
ItemId: id, // extract `node.ItemId` into a variable called `id`
ItemTitle: title, // extract `node.ItemTitle` into a variable called `title`
Menu: {
Item: [obj] // extract `node.Menu.Item[0]` into a variable called obj
}
} = node;
console.log('id =', id);
console.log('title =', title);
console.log('obj =', obj);

预编辑:在嵌套数组中提取对象的id。
let node = {
ItemTitle: 'Title',
ItemId: 5,
Menu: {Item: [{ItemId: 579}]}
}
let {
ItemId: id, // extract `node.ItemId` into a variable called `id`
ItemTitle: title, // extract `node.ItemTitle` into a variable called `title`
Menu: {
Item: [{
ItemId: subItemId // extract `node.Menu.Item[0].ItemId` into a variable called `subItemId`
}]
}
} = node;
console.log('id =', id);
console.log('title =', title);
console.log('subItemId =', subItemId);