このタイプのパターンに従うAPI(変更できない)からオブジェクトが送信されています:
{
aaa: {
name: "Aaa",
desc: "..."
},
bbb: {
name: "Bbb",
desc: "..."
},
ccc: {
name: "Ccc",
desc: "...",
stuff: {
foo: {
bar: "bar"
},
keys: ["foo"]
}
},
keys: ["aaa", "bbb", "ccc"]
}
私がやろうとしているのは、これらのオブジェクトをクライアント上でより使いやすいオブジェクトに「フラット化」することです。したがって、上記のオブジェクトを平坦化した結果は次のようになります。
[
{
key: "aaa",
name: "Aaa",
desc: "..."
},
{
key: "bbb",
name: "Bbb",
desc: "..."
},
{
key: "ccc",
name: "Ccc",
stuff: [
{ key: "foo", bar: "bar" }
]
}
]
ご覧のとおり、トラバースする必要のあるデータには2つのレベルがあります。現在、ループして新しいオブジェクトを作成しています(以下の簡単な例)。これを処理するためのよりエレガントな方法があるかどうか疑問に思っていますか?
var myObjs = [];
$(data.keys).each(function(i, objKey) {
i = $.extend({}, data[objKey], { key: objKey });
myObjs.push(i);
});