我有对象从遵循这种模式的 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);
});