[英]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.