admin管理员组

文章数量:815020

将散列数组中的值相减

我想减去哈希数组中的两个值,以便知道丢弃值的增长。

我的数组是这个:

array = 
{"SiteA": [
 {device:"SiteA", discardmax:16617331511, timeCapturedmax:"February 18, 2018 at 09:27 AM"}, 
 {device:"SiteA", discardmax:16617216094, timeCapturedmax:"February 18, 2018 at 09:22 AM"}, 
 {device:"SiteA", discardmax:16617202279, timeCapturedmax:"February 18, 2018 at 09:18 AM"},
 {device:"SiteA", discardmax:16616985649, timeCapturedmax:"February 18, 2018 at 09:12 AM"}, 
 {device:"SiteA", discardmax:16616404836, timeCapturedmax:"February 18, 2018 at 09:07 AM"},  
 {device:"SiteA", discardmax:16616368250, timeCapturedmax:"February 18, 2018 at 09:03 AM"}
], 
"SiteB": [
 {device:"SiteB", discardmax:16617331511, timeCapturedmax:"February 18, 2018 at 09:27 AM"}, 
 {device:"SiteB", discardmax:16617216094, timeCapturedmax:"February 18, 2018 at 09:22 AM"}, 
 {device:"SiteB", discardmax:16617202279, timeCapturedmax:"February 18, 2018 at 09:18 AM"},
 {device:"SiteB", discardmax:16616985649, timeCapturedmax:"February 18, 2018 at 09:12 AM"}, 
 {device:"SiteB", discardmax:16616404836, timeCapturedmax:"February 18, 2018 at 09:07 AM"},  
 {device:"SiteB", discardmax:16616368250, timeCapturedmax:"February 18, 2018 at 09:03 AM"}
]}

我想从'discardmax'中减去值并获得以下数组。

[
 {device:"SiteA", discardmax:115417, timeCapturedmax:"February 18, 2018 at 09:27 AM"}, 
 {device:"SiteA", discardmax:13815, timeCapturedmax:"February 18, 2018 at 09:22 AM"}, 
 {device:"SiteA", discardmax:216630, timeCapturedmax:"February 18, 2018 at 09:18 AM"},
 {device:"SiteA", discardmax:580813, timeCapturedmax:"February 18, 2018 at 09:12 AM"}, 
 {device:"SiteA", discardmax:36586, timeCapturedmax:"February 18, 2018 at 09:07 AM"},
 {device:"SiteB", discardmax:115417, timeCapturedmax:"February 18, 2018 at 09:27 AM"}, 
 {device:"SiteB", discardmax:13815, timeCapturedmax:"February 18, 2018 at 09:22 AM"}, 
 {device:"SiteB", discardmax:216630, timeCapturedmax:"February 18, 2018 at 09:18 AM"},
 {device:"SiteB", discardmax:580813, timeCapturedmax:"February 18, 2018 at 09:12 AM"}, 
 {device:"SiteB", discardmax:36586, timeCapturedmax:"February 18, 2018 at 09:07 AM"}
]

在ruby中,我使用了这段代码,但是现在我想使用javascript:

  keystotal = arrya.keys

  arr_sub = keystotal.map { |k|
    [k, groupedtotal[k].each_cons(2).map do |g,h|
    { devicetotal: g[:devicetotal], porttotal: g[:porttotal], device_int_stats_total: g[:device_int_stats_total], octetsrxsub: g[:octetsrxtotal]-h[:octetsrxtotal], octetstxsub: g[:octetstxtotal]-h[:octetstxtotal], time_unixsub: g[:time_unixtotal]-h[:time_unixtotal], time_unixtotal: g[:time_unixtotal], timeCapturedtotal: g[:timeCapturedtotal]}
  end
  ]
  }
  table_sub = arr_sub.map { |ts| ts[1] }
回答如下:

循环遍历数组,从array[i+1].discardmax中减去array[i].discardmax。创建一个新对象,将其合并为array[i]的副本。

array = [
 {device:"router", discardmax:16617331511, timeCapturedmax:"February 18, 2018 at 09:27 AM"}, 
 {device:"router", discardmax:16617216094, timeCapturedmax:"February 18, 2018 at 09:22 AM"}, 
 {device:"router", discardmax:16617202279, timeCapturedmax:"February 18, 2018 at 09:18 AM"},
 {device:"router", discardmax:16616985649, timeCapturedmax:"February 18, 2018 at 09:12 AM"}, 
 {device:"router", discardmax:16616404836, timeCapturedmax:"February 18, 2018 at 09:07 AM"},  
 {device:"router", discardmax:16616368250, timeCapturedmax:"February 18, 2018 at 09:03 AM"}
]

var result = [];
for (var i = 0; i < array.length-1; i++) {
    result.push({...array[i], discardmax: array[i].discardmax - array[i+1].discardmax});
}

console.log(result);

本文标签: 将散列数组中的值相减