对象分配的嵌套解构

时间:2016-11-04 18:01:41

标签: javascript ecmascript-6 javascript-objects

使用ES6解构,是否有任何方法可以在赋值时解构嵌套对象?

这是一个快速代码示例,用于显示我的意思:

decltype(auto)

2 个答案:

答案 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);