嵌套对象和数组解构 [英] Nested object and array destructuring
问题描述
我的对象包括一个也包含对象的嵌套数组,从这个数组我只会喜欢几个字段。
我可以做嵌套对象的破坏,罚款,数组解析不错,但不在一起?
我目前的尝试如下所示:
var data = {
title:title1,
bar:asdf,
innerData:[
{
title:inner-title1,
foo:asdf
},
{
title:inner-title2,
foo:asdf
}
]
};
var {title,innerData:[{title}]} = data;
console.log(title); $($ var $ title)of $ data $ {
} {
console.log(title);
}
但是收到一条消息说 innerData没有定义。
我想要的结果可能是:
{
title:title1,
innerData:[
{
title:inner-title1
},
{
标题:inner-title2
}
]
};
您可以将变量名称调整为除定义 innerData
;使用 .map()
或 JSON.stringify()
, JSON.parse()
过滤标题
属性从 innerData
对象
var {title,titles = data.innerData.map(o =>({title:o.title}))} = data;
维护 innerData
可以使用的变量名对象的数组解构
var [title,innerData] = [data.title,data.innerData.map(o => ({标题:o.title}))];
使用 JSON.stringify()
, JSON.parse()
var [title,innerData] = JSON。解析(JSON.stringify([data.title,data.innerData],[title]));
编辑
如果要求是在数据
中创建一个包含所有标题
属性的数组,则可以使用 JSON.stringify()
with replacer array set to [title]
, JSON.parse )
,spread元素
var data =标题:title1,bar:asdf,innerData:[{title:inner-title1,foo:asdf},{title:inner-title2,foo:asdf}]}; var innerData = JSON.parse(JSON.stringify([data,... data.innerData],[title]))console.log(innerData);
/ div>
I am trying to convert an object to a leaner version using destructuring.
My object includes a nested array which also contains objects, from this array I would only like a few fields.
I can do the nested object destructuring fine, and the array destructuring fine but not together?
My current try looks like this:
var data = {
title: "title1",
bar: "asdf",
innerData: [
{
title: "inner-title1",
foo: "asdf"
},
{
title: "inner-title2",
foo: "asdf"
}
]
};
var { title, innerData: [ { title} ] } = data;
console.log(title);
for (var { title} of innerData) {
console.log(title);
}
But get a message saying innerData is not defined.
The outcome I would like might be:
{
title: "title1",
innerData: [
{
title: "inner-title1"
},
{
title: "inner-title2"
}
]
};
You can adjust the variable name to an identifier other than defined innerData
; use .map()
or JSON.stringify()
, JSON.parse()
to filter title
property from innerData
objects
var {title, titles = data.innerData.map(o => ({title:o.title}))} = data;
to maintain innerData
variable name you can use array destructuring of object
var [title, innerData] = [data.title, data.innerData.map(o => ({title:o.title}))];
using JSON.stringify()
, JSON.parse()
var [title, innerData] = JSON.parse(JSON.stringify([data.title, data.innerData], ["title"]));
Edit
If requirement is to create an array containing all title
properties within data
you can use JSON.stringify()
with replacer array set to ["title"]
, JSON.parse()
, spread element
var data = {
title: "title1",
bar: "asdf",
innerData: [
{
title: "inner-title1",
foo: "asdf"
},
{
title: "inner-title2",
foo: "asdf"
}
]
};
var innerData = JSON.parse(JSON.stringify([data, ...data.innerData], ["title"]))
console.log(innerData);
这篇关于嵌套对象和数组解构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!