我想知道_.map是否应该用于完成以下内容:
假设您有以下json(时间长度'将始终为1.长度'值'未知但是对于&中的每个项目总是相同的#39;数据'数组(本例中为2)。
data=[
{
time: "time1",
values: [
1,
2
]
},
{
time: "timex",
values: [
7,
9
]
},
{
time: "time_whatever",
values: [
11,
22
]
}
]
这就是所需的输出:
[
{
"x": "time1",
"y": 1,
"y2": 2
},
{
"x": "time1",
"y": 7,
"y2": 9
},
{
"x": "time1",
"y": 11,
"y2": 22
}
]
当'重视'时,我能够实现这一目标。长度是1:
d = _.map(data, function(r, i) {
return {
"x": r.time,
"y": r.values
};
});
我尝试将每个循环放在_.map函数中但是不成功。
不确定map是否是多维数组的正确答案。我知道这可以通过javascript为每个循环完成,但我想知道是否有一个简单的方法来使用_.map或者可能是另一个下划线集合。
由于
答案 0 :(得分:2)
普通循环可能是最简单,最干净,最快速的解决方案:
var d = _.map(data, function(r, i) {
var o = {
"x": r.time,
"y": r.values[0]
};
for (var i=1; i<r.values.length; i++)
o["y"+(i+1)] = r.values[i];
return o;
});
使用下划线,您可以使用reduce
:
var d = _.map(data, function(r, i) {
return _.reduce(r.values, function(o, v, i) {
o["y"+(i?i+1:"")] = v;
return o;
}, {
"x": r.time
});
});
(两个代码段都假设虽然values.length
可能未知,但数组中至少有一个值)子>