我有一个对象

const complicatedObject = {
  propertyA: {
    property1: 1,
    property2: 2
  },
  propertyB: {
    property1: 1,
    property2: 2
  }
}

如果我想获取propertyA我会做
const { propertyA } = complicatedObject

console.log(propertyA) // { property1: 1, property2: 2}

如果我想获取propertyA's property1值,我会做
const { propertyA: { property1 } } = complicatedObject

console.log(property1) // 1

我可以通过这种方式获取propertyApropertyA's property1
const {
  propertyA,
  propertyA: {
    property1
  }
} = complicatedObject

console.log(propertyA) // { property1: 1, property2: 2}
console.log(property1) // 1

是否有一种更简单的方法来同时获取propertyAproperty1

我阅读了以下内容,但我觉得没有什么比这更答案。
  • https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
  • http://exploringjs.com/es6/ch_destructuring.html#sec_more-obj-destructuring

  • 谢谢!

    最佳答案

    只需使用两个单独的解构语句,如下所示:

    const { propertyA } = complicatedObject;
    const { property1 } = propertyA;
    

    示范:

    const complicatedObject = {
      propertyA: {
        property1: 1,
        property2: 2
      },
      propertyB: {
        property1: 1,
        property2: 2
      }
    }
    const { propertyA } = complicatedObject;
    const { property1 } = propertyA;
    
    console.log(propertyA);
    console.log(property1);


    但是,如果您想使用最简洁的代码,而只是想要property1的值(1),则可以改用以下方法:
    const { propertyA: { property1 } } = complicatedObject;
    

    示范:

    const complicatedObject = {
        propertyA: {
            property1: 1,
            property2: 2
        },
        propertyB: {
            property1: 1,
            property2: 2
        }
    }
    const { propertyA: { property1 } } = complicatedObject;
    console.log(property1);


    希望这会有所帮助!

    10-07 14:54