デストラクチャリングを使用して、オブジェクトをよりスリムなバージョンに変換しようとしています。
私のオブジェクトには、オブジェクトも含むネストされた配列が含まれています。この配列から、いくつかのフィールドのみが必要です。
ネストされたオブジェクトは正常に破棄でき、配列は正常に破棄できますが、一緒にはできませんか?
私の現在の試みは次のようになります:
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);
}
しかし、というメッセージを受け取ります innerData is not defined.
私が望む結果は次のようになります。
{
title: "title1",
innerData: [
{
title: "inner-title1"
},
{
title: "inner-title2"
}
]
};
変数名を定義済み以外の識別子に調整できinnerData
ます。使用し.map()
たりJSON.stringify()
、JSON.parse()
フィルタへtitle
のプロパティinnerData
のオブジェクト
var {title, titles = data.innerData.map(o => ({title:o.title}))} = data;
innerData
変数名を維持するには、オブジェクトの配列分解を使用できます
var [title, innerData] = [data.title, data.innerData.map(o => ({title:o.title}))];
を使用してJSON.stringify()
、JSON.parse()
var [title, innerData] = JSON.parse(JSON.stringify([data.title, data.innerData], ["title"]));
編集
要件がすべて含む配列を作成する場合はtitle
内のプロパティをdata
ご使用することができますJSON.stringify()
に代用配列のセットで["title"]
、JSON.parse()
スプレッド要素、
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);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加