分解嵌套对象,但保留对嵌套对象的引用 [英] Destructure a nested object, but keep a reference to the nested object
问题描述
我有一个简单的用例,但我认为使用ES6语法是不可能的.我想使用对象分解来从嵌套对象中检索某些已知属性,但是我也想引用该嵌套对象,以便将其传递给可能关心其他属性的其他函数.
这是一个示例对象:
var record = {名称:"foo",元数据:{createdDate:"2017-02-19",lastModifiedDate:"2018-07-24",类型:栏"}};
在代码的特定位置,我想从元数据中提取一些值.同时,我还要提取整个元数据对象:
let {元数据:{创建日期}} =记录;如果(date(createdDate).before(NEW_FEATURE_DATE)){oldFeature(元数据);} 别的 {newFeature(元数据);}
不幸的是,我对 metadata
属性的引用仅用于解构……它的值是 undefined
(从技术上讲,是未定义的,它没有值)./p>
我知道我可以用类似的方法解决这个问题
let {元数据:{创建日期}} =记录,元数据= record.metadata;
或
let {元数据} =记录,{创建日期} =元数据;
...但是看起来有点笨拙,不是吗?是我缺少的东西,还是语法上的空白"?
您可以添加其他相同属性而无需进行结构分解.
var record = {名称:"foo",元数据:{createdDate:"2017-02-19",lastModifiedDate:"2018-07-24,键入:" bar}};让{元数据:{createdDate},元数据} =记录;//嵌套解构的^^^^^^^^^//值的^^^^^^^^^console.log(元数据);console.log(createdDate);
I have a simple use-case, but I think it's not possible with ES6 syntax. I'd like to use object destructuring to retrieve certain known properties from a nested object, but I'd also like a reference to that nested object so that I can pass it along to other functions which may care about other properties.
Here's an example object:
var record = {
name: "foo",
metadata: {
createdDate: "2017-02-19",
lastModifiedDate: "2018-07-24",
type: "bar"
}
};
At a certain point in my code, I'd like to extract some values from the metadata. At the same time, I'd also like to extract the entire metadata object:
let {
metadata: {
createdDate
}
} = record;
if ( date( createdDate ).before( NEW_FEATURE_DATE ) ){
oldFeature( metadata );
} else {
newFeature( metadata );
}
Unfortunately, my reference to the metadata
property is used purely for destructuring... it's value is undefined
(technically, being undefined, it has no value).
I know I can solve this with something like
let {
metadata: {
createdDate
}
} = record,
metadata = record.metadata;
or
let {
metadata
} = record,
{
createdDate
} = metadata;
... but that seems kind of clumsy, doesn't it? Is there something I'm missing, or is this just a "gap" in the syntax?
You could just add another same property without destructuring.
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);
这篇关于分解嵌套对象,但保留对嵌套对象的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!