javascript - 如何按类别排列数组?
问题描述
我实际上是 javascript 的新手,我有这种数据系列
[3,3,4,5,5,6]
我想以数组的形式排列它,我期望的输出是
(2 之 3) (1 之 4) (2 之 5) (1 之 6)
有人可以帮我解决这个问题吗?
我需要在图表中显示这些数据,我使用的是chartJS,数字是月份的形式(1是1月2是2月....)
这嗬真的我的数据看起来像
021-06-20T16:17:35.000000Z
2021-07-19T00:17:35.000000Z
2021-07-20T00:17:35.000000Z
2021-07-21T00:17:35.000000Z
2021-07-21T00:17:35.000000Z
2021-08-21T00:17:35.000000Z
我真正期望的是以这种形式拥有一个对象数组
[{data : '06',count : 1},
{data : '07',count : 4},
{data : '08',count : 1}]
有什么技巧可以在不格式化数据的情况下使用 chartjs 做到吗?
解决方案
你可以通过多种方式做到这一点,尽管我只是给你一个。
function callback(acc, child) {
let isCreated = acc.find((ch) => ch.data === child);
if (isCreated) {
isCreated.count++;
} else {
acc.push({ data: child, count: 1 });
}
return acc;
}
let data = [3, 3, 4, 5, 5, 6].reduce(callback, []);
console.log(data);
日志应该是
[
{ data: 3, count: 2 },
{ data: 4, count: 1 },
{ data: 5, count: 2 },
{ data: 6, count: 1 }
]
推荐阅读
- ruby - 在没有附加数组的情况下对数组的子序列进行排序
- java - 将字符串的单词存储到单独的数组中
- pandas - 循环创建和合并 Pandas 数据框
- javascript - 即使在机器人重新启动后,有没有办法跟踪超时?
- java - 一种给出2个双循环链表的并集和交集的方法
- interface - 为什么实现接口的类不需要实现 Object 的隐式声明方法?
- javascript - 合并 3 个订阅数据以加入新对象 rxjs Angular 9 中的数据
- mongodb - 从数组中获取日期最大的项目值
- python - Tkinter 变量未更新
- parsing - 列号不一致时如何使用 AWK 解析值