【问题标题】:Combine duplicate rows and sum the values合并重复行并对值求和
【发布时间】:2020-02-03 04:26:59
【问题描述】:

我有以下数组,它们已经排序:

day =   [5,5,5,6,6,   6,   6,7,7,7,   8,   8,8];
time =  [0,0,0,0,0,1.03,0.28,0,0,0,0.63,5.58,1];
class = [ , , , , ,   b,   b, , , ,   c,   b,c];

我想消除 day 数组中的重复值,并在 time 数组中添加相应的值,但仅针对相应的类,如果类为空,则为零,它将是这样的:

day_fix = [5,   6,7,   8];
class_b = [0,1.31,0,5.58];
class_c = [0,   0,0,1.63];

谢谢。

【问题讨论】:

  • 如果您自己尝试一些代码并将其与您的问题一起发布,您可能会获得更多帮助。

标签: javascript arrays merge duplicates


【解决方案1】:

我认为以下内容可能会对您有所帮助:

const day   = [5,5,5,6,6,   6,   6,7,7,7,   8,   8,  8]
const time  = [0,0,0,0,0,1.03,0.28,0,0,0,0.63,5.58,  1]
const clazz = [ , , , , , 'b', 'b', , , , 'c', 'b','c']

const resultDays = {}

day.forEach((d, i) => {
  resultDays[d] = resultDays[d] || {}
  if (clazz[i]) {
    resultDays[d][clazz[i]] = (resultDays[d][clazz[i]] || 0) + time[i]
  }
})

console.log(resultDays)

输出是一个对象,它只是您提供的结果的另一种表示形式。这样会更容易,因为它消除了将来为每个类创建单独数组的需要。

【讨论】:

  • 谢谢你,对我帮助很大。我是一个使用 javascript 的新手,我对对象不太了解,但我会尝试将其转换为数组,这样我更容易继续运行我的代码。真的太感谢你了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多