javascript - 如何对重复对象键日值的数组进行排序并创建一个具有对象坐标的新数组,其中 y 将保存重复值
问题描述
迭代日期数组以创建具有以下格式的新数组
const dates= [
{datetime:'Monday'},
{datetime:'Tuesday'},
{datetime:'Wednesday'},
{datetime:'Thursday'},
{datetime:'Monday'},
{datetime:'Wednesday'},
{datetime:'Friday'},
{datetime:'Monday'}]
// Result
result = [ { x: 'Monday', y: 3 },
{ x: 'Tuesday', y: 1 },
{ x: 'Wednesday', y: 2 },
{ x: 'Thursday', y: 1 },
{ x: 'Friday', y: 1 } ]
解决方案
浏览这些项目,并使用key
日期时间构建一个对象。当相同的日期时间发生时,增加值
const combine = (arr, all = {}) => {
arr.forEach(({ datetime: x }) => ((all[x] ??= { x, y: 0 }).y += 1));
return Object.values(all);
};
const dates = [
{ datetime: "Monday" },
{ datetime: "Tuesday" },
{ datetime: "Wednesday" },
{ datetime: "Thursday" },
{ datetime: "Monday" },
{ datetime: "Wednesday" },
{ datetime: "Friday" },
{ datetime: "Monday" },
];
console.log(combine(dates))
推荐阅读
- sql - 从 SELECT 返回的值生成列
- html - 结合两个 SVG LinearGradient
- angular - 业力测试运行器错误 TS2503:找不到命名空间“gapi”
- keycloak - 我可以将用户名而不是名字+姓氏传递给闪亮的代理吗
- java - Jython - 将具有韩语字符串的脚本输出保存到文件中
- swiftui - 如何在 SwiftUI 的预览参数中传递类型 Namespace.ID?
- android - 带有文档的 Maven 出版物
- javascript - 在 JS 中使用 history.pushState 加载页面时后退按钮不起作用
- javascript - html - 使隐藏的拇指出现在单击范围输入滑块的位置
- powershell - 如何归档名称来自 Max lastwritetime 和 Min lastwritetime 的文件