我有一个对象数组,如下所示(虽然下面的例子只有一个元素在数组中)
[
{
"uptime":0,
"load":{"x":0.11,"y":0.22,"z":0.33},
"cpu":[
{"u":111,"n":112,"s":113,"i":114,"q":115},
{"u":211,"n":212,"s":213,"i":214,"q":215}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我试图使用underscore.js来展平每个元素,所以整个数组看起来像这样:
[
{
"uptime":0,
"load_x": 0.11
"load_y": 0.03
"load_z": 0.01,
"cpu1_u": 111,
"cpu1_n": 112,
"cpu1_s": 113,
"cpu1_i": 114,
"cpu1_q": 115,
"cpu2_u": 211,
"cpu2_n": 212,
"cpu2_s": 213,
"cpu2_i": 214,
"cpu2_q": 215,
}
]
Run Code Online (Sandbox Code Playgroud)
我已经对'load'元素进行了排序(虽然不是一般),因为那只是一个已知的3字段对象.
尽管如此,扁平化cpu阵列也使我望而却步.我的代码如下,以及我的代码生成的输出
我知道我可以写一个js循环并完成它,但我已经看到了一些非常优雅的下划线解决方案,我确信它可能.有什么建议吗?
我的守则
var profiles = [
{
"uptime":0,
"load":{"x":0.11,"y":0.22,"z":0.33},
"cpu":[
{"u":111,"n":112,"s":113,"i":114,"q":115},
{"u":211,"n":212,"s":213,"i":214,"q":215}
]
}
];
var flat = _.map(profiles, function(profile) {
var p = _.extend(_.omit(profile, 'load'), {
load_1: Math.round(100*profile.load.x)/100,
load_5: Math.round(100*profile.load.y)/100,
load_15: Math.round(100*profile.load.z)/100
});
var …Run Code Online (Sandbox Code Playgroud)