编程语言
首页 > 编程语言> > javascript – 构造嵌套对象,但保留对嵌套对象的引用

javascript – 构造嵌套对象,但保留对嵌套对象的引用

作者:互联网

参见英文答案 > object destructuring: how to use intermediate nested property                                    1个
我有一个简单的用例,但我认为使用ES6语法是不可能的.我想使用对象解构从嵌套对象中检索某些已知属性,但我也想要对该嵌套对象的引用,以便我可以将它传递给其他可能关心其他属性的函数.

这是一个示例对象:

var record = {
    name: "foo",
    metadata: {
        createdDate: "2017-02-19",
        lastModifiedDate: "2018-07-24",
        type: "bar"
    }
};

在我的代码中的某个点,我想从元数据中提取一些值.同时,我还想提取整个元数据对象:

let {
    metadata: {
        createdDate
    }
} = record;

if ( date( createdDate ).before( NEW_FEATURE_DATE ) ){
    oldFeature( metadata );
} else {
    newFeature( metadata );
}

不幸的是,我对metadata属性的引用纯粹用于解构…它的值是未定义的(技术上,未定义,它没有价值).

我知道我可以解决这个问题

let {
        metadata: {
            createdDate
        }
    } = record,
    metadata = record.metadata;

要么

let {
        metadata
    } = record,
    {
        createdDate
    } = metadata;

……但这看起来有点笨拙,不是吗?有什么我缺少的,或者这只是语法中的“差距”?

解决方法:

您可以添加另一个相同的属性而不进行解构.

var record = { name: "foo", metadata: { createdDate: "2017-02-19",  lastModifiedDate: "2018-07-24", type: "bar" } };

let { metadata: { createdDate }, metadata } = record;
//    ^^^^^^^^                                        for nested destructuring
//                               ^^^^^^^^             for the value

console.log(metadata);
console.log(createdDate);

标签:destructuring,javascript
来源: https://codeday.me/bug/20190929/1833114.html