[英]Using underscorejs map with multi-dimensional arrays
我想知道_.map是否应用于完成以下任务:
假设您具有以下json(“时间”的长度将始终为1。“值”的长度是未知的,但对于“数据”数组中的每个项目,该值将始终相同(在此示例中为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函数中,但未成功。
不确定使用多维数组在这里是正确的答案。 我知道每个循环都可以使用javascript完成,但是我想知道是否有一种简单的方法可以通过_.map或另一个underscorejs集合来实现。
谢谢
普通循环可能是最简单,最干净和最快的解决方案:
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
可能是未知的 ,但数组 中至少会有一个值)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.