【问题标题】:Tips on Handling an issue with arrays Javascript or Jquery处理数组 Javascript 或 Jquery 问题的提示
【发布时间】:2021-04-09 17:14:28
【问题描述】:

所以,我有两个数组要显示在图表中。我正在使用chart.js。 对于 Y,我使用了卷数组,对于 X,我使用了日期。 一个数组的索引对应另一个数组中相同索引的值,例如:

var daysToDisplay = [12-01-2021, 13-01-2021, 14-01-2021]

volume = [1,2,3]

那么卷“1”对应于第一个日期,依此类推。

但是,有时日期会重复(这不应该出现在我的图表上)。 我需要的是:使相同的日期成为一个,并将这些天的所有卷添加到与日期相同的索引中。

我举个例子方便大家查看

daysToDisplay = [12-01-2021, 13-01-2021, 13-01-2021, 13-01-2021, 14-01-2021]

volumes = [1,2,3,4,5]

变成:

daysToDisplay = [12-01-2021, 13-01-2021 ,14-01-2021]

volumes = [1,9,5]

有人可以告诉我如何进行吗?

【问题讨论】:

  • 1-13 == 13-01 怎么样?
  • 我的错误Mr.Polywhirl,已经编辑过了。

标签: javascript jquery arrays


【解决方案1】:

您可以将日期映射到一组具有相关(按索引)交易量的货币对。一旦你有了这些对,你可以将它们减少为一个带有键(日期)和每个分组的卷的累积值的对象。现在您可以将对象转换为条目并将它们转置为两个列表(键和值)。

const
  transpose = arr => arr[0].map((_, col) => arr.map(row => row[col])),
  dates = ['12-01-2021', '13-01-2021', '13-01-2021', '13-01-2021', '14-01-2021'],
  volumes = [1, 2, 3, 4, 5],
  [ days, vols ] = transpose(Object.entries(dates
    .map((date, index) => [date, volumes[index]])
    .reduce((acc, [date, vol]) => ({ ...acc, [date]: (acc[date] || 0) + vol }), {})));

console.log(JSON.stringify(days)); // ["12-01-2021","13-01-2021","14-01-2021"]
console.log(JSON.stringify(vols)); // [1,9,5]
.as-console-wrapper { top: 0; max-height: 100% !important; }

这里是长版

const
  dates = ['12-01-2021', '13-01-2021', '13-01-2021', '13-01-2021', '14-01-2021'],
  volumes = [1, 2, 3, 4, 5];

const
  pairs = dates.map((date, index) => [date, volumes[index]]),
  grouped = pairs.reduce((acc, [date, vol]) => {
    const prev = acc[date] || 0;
    acc[date] = prev + vol;
    return acc;
  }, {});

const
  days = Object.keys(grouped),
  vols = Object.values(grouped);

console.log(JSON.stringify(days)); // ["12-01-2021","13-01-2021","14-01-2021"]
console.log(JSON.stringify(vols)); // [1,9,5]
.as-console-wrapper { top: 0; max-height: 100% !important; }

【讨论】:

  • 我不会想到这一点。感谢Polywhirl先生的提示,我会尝试在我的代码中实现它。
猜你喜欢
  • 2010-11-07
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
相关资源
最近更新 更多