簡體   English   中英

在多維數組中使用Underscore.js映射

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM