首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对包含日期数组的对象数组进行排序。

对包含日期数组的对象数组进行排序。
EN

Stack Overflow用户
提问于 2021-03-05 14:26:32
回答 2查看 721关注 0票数 1

我目前正在尝试对一个对象数组进行排序,每个对象都包含一个日期数组。数据结构如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const array = [
  {
    name: "Judith",
    cal: {
      ti: [
        "2021-03-09T15:00:00Z",
        "2021-03-09T15:30:00Z",
        "2021-03-16T14:00:00Z"
      ]
    }
  },
  {
    name: "billy",
    cal: {
      ti: [
        "2021-03-05T14:30:00Z",
        "2021-03-08T14:00:00Z",
        "2021-03-08T14:30:00Z"
      ]
    }
  }
]

我试图使用称为dayjs的日期库,根据最近可用的时间对数组进行排序。我试图在dayjs包中使用diff方法比较每个日期数组,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const test = array.map(i => i.cal.ti.sort((a, b) => {
 dayjs(a).diff(dayjs(b))
}))

console.log(test)

我想对数组中包含的对象进行排序,首先用最近的可用时间返回对象,以此类推。我注意到我在这类中不正确地返回,我相信我也有一大堆问题在进行,在那里我没有正确地比较日期,导致我的数组失败。

附件是用于调试的repl.it:

https://repl.it/@rterrell25/LegalJaggedCoordinate#index.js

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-05 14:54:59

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const array = [
  {
    name: "Judith",
    cal: {
      ti: [
        "2021-03-16T14:00:00Z",
        "2021-03-09T15:00:00Z",
        "2021-03-09T15:30:00Z",
        "2021-03-19T15:30:00Z",
        "2021-02-19T15:30:00Z",
      ]
    }
  },
  {
    name: "billy",
    cal: {
      ti: [
        "2021-03-08T14:00:00Z",
        "2021-03-05T14:30:00Z",
        "2021-02-25T14:30:00Z",
        "2021-03-25T14:30:00Z",
        "2021-03-08T14:30:00Z"
      ]
    }
  }
];

const now = new Date();

array.forEach(i => i.cal.ti.sort((a, b) =>
    Math.abs(new Date(a) - now)
    - Math.abs(new Date(b) - now)
));

array.sort((a, b) =>
    Math.abs(new Date(a.cal.ti[0]) - now)
    - Math.abs(new Date(b.cal.ti[0]) - now)
);

console.log(array);

票数 1
EN

Stack Overflow用户

发布于 2021-03-05 14:40:59

在您的测试数据中,日期已经被排序,所以这可能会扭曲您对已经发生的事情的看法。

我重新排序了测试数据,以便它们启动未排序,然后非常轻微地更改排序,以便它返回-1或1(这是应该返回的排序函数):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const array = [
  {
    name: "Judith",
    cal: {
      ti: [
        "2021-03-16T14:00:00Z",
        "2021-03-09T15:00:00Z",
        "2021-03-09T15:30:00Z",
      ]
    }
  },
  {
    name: "billy",
    cal: {
      ti: [
        "2021-03-08T14:00:00Z",
        "2021-03-05T14:30:00Z",
        "2021-03-08T14:30:00Z"
      ]
    }
  }
]
const test = array.map(i => i.cal.ti.sort((a, b) => (dayjs(a).isAfter(dayjs(b)) ? 1 : -1)))
 
 console.log(test)

更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const test = array.sort((a,b) => {
  let aFirst = a.cal.ti.map(i => dayjs(i)).sort((a1,b1) => a1.isAfter(b1) ? 1 : -1)[0]
  let bFirst = b.cal.ti.map(i => dayjs(i)).sort((a1,b1) => a1.isAfter(b1) ? 1 : -1)[0]
  return aFirst.isAfter(bFirst) ? 1 : -1
})
 console.log(test)

排序dayjs对象的方法来自这里的建议(https://github.com/iamkun/dayjs/issues/328)

关于返回的注意事项--如果使用{}包装函数体,则应该在大括号内使用return。您将注意到,在我的排序函数中,没有任何大括号--在本例中,单行函数的返回值是自动获取的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66500374

复制
相关文章
如何使用 Prometheus 和 Grafana 优雅的实现服务器可视化
Prometheus 是一个开源监控工具,实现了高维数据模型。Prometheus 有多种数据可视化模式,其中一种是集成 Grafana。Prometheus 以高效的自定义格式将时间序列数据存储在内存和本地磁盘上。
Spark学习技巧
2022/03/15
1.3K0
如何使用 Prometheus 和 Grafana 优雅的实现服务器可视化
如何使用 Prometheus 和 Grafana 监控 Linux 进程?
在 Linux 系统中,监控进程的运行状态对于系统管理员和开发人员来说非常重要。通过监控进程,我们可以及时发现问题、优化性能和保证系统的稳定性。在本文中,我们将介绍如何使用 Prometheus 和 Grafana 监控 Linux 进程,并展示如何配置和可视化进程相关的指标数据。
网络技术联盟站
2023/06/18
9700
如何使用 Prometheus 和 Grafana 监控 Linux 进程?
EMQX+Prometheus+Grafana:MQTT 数据可视化监控实践
作为一款全球下载量超千万的大规模分布式物联网 MQTT 服务器,最新发布的 EMQX 5.0 不仅全球首个达成单集群 1 亿 MQTT 连接支持,也是首个将 QUIC 引入 MQTT 的开创性产品。如今,EMQX 在各个行业为高可靠、高性能的物联网实时数据移动、处理和集成提供着动力,助力企业构建关键业务的 IoT 应用。
EMQ映云科技
2022/12/12
2K0
集成prometheus+Grafana可视化监控
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
BUG弄潮儿
2023/02/24
8340
集成prometheus+Grafana可视化监控
prometheus+Grafana数据展示
通过前面课程的学习我们知道了如何部署和设置prometheus,但是这个监控软件的展示界面实在是有些难看,所以我们换一个展示方式Grafana,是一个开源的度量分析和可视化工具(没有监控功能),可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
星哥玩云
2022/09/15
1.1K0
prometheus+Grafana数据展示
如何使用Prometheus和Grafana监控多个Kubernetes集群
为什么要监视多个Kubernetes集群,主要有两个原因。在第一个使用场景中,您拥有集群,每个开发阶段(如开发、阶段化和生产)都有一个集群。另一种情况是运行托管服务,或有运行工作负载的客户机,这些工作负载需要对可靠性进行监控,或作为运行服务的一部分进行使用。
用户5166556
2023/03/18
2.6K0
如何使用Prometheus和Grafana监控多个Kubernetes集群
Grafana for Prometheus
虽然Prometheus自带了图形监控页面,但是还是比较简单,所以推荐使用更加专业的Grafana Prometheus监控系列 Prometheus快速体验 Grafana for Promet
十毛
2019/03/27
1.2K0
Grafana for Prometheus
Prometheus入门教程(二):Prometheus + Grafana实现可视化、告警
Prometheus UI 提供了快速验证 PromQL 以及临时可视化支持的能力,但其可视化能力却比较弱。一般情况下,我们都用 Grafana 来实现对 Prometheus 的可视化实现。
陈树义
2020/10/27
2.6K1
Prometheus入门教程(二):Prometheus + Grafana实现可视化、告警
使用Prometheus、Grafana监控Artifactory实践
在企业的系统平台上运行artifactory可能每天有上百万个制品在不断流转,随着研发团队不断扩大,用户慢慢增多,并发量也相应的逐渐增大,在保证高可用的同时,我们对artifactory所在系统及应用服务进行监控会显得尤其重要。那么如何实现系统及应用的监控呢?
JFrog杰蛙科技
2021/05/21
7000
使用Prometheus、Grafana监控Artifactory实践
使用Prometheus+Grafana监控JVM
https://github.com/prometheus/jmx_exporter
py3study
2020/03/19
4.6K0
使用Prometheus+Grafana监控JVM
4) 运行以下命令启动3个Tomcat,记得把<path-to-prom-jvm-demo>替换成正确的路径:
颇忒脱
2019/03/13
5K0
使用Prometheus+Grafana监控JVM
Prometheus 的美化 - Grafana
启动 http://localhost:3000/,输入用户名和密码:admin/admin
谢正伟
2021/10/09
1.2K0
Prometheus 的美化 - Grafana
Prometheus + Grafana安装
鱼找水需要时间
2023/08/03
2600
Prometheus + Grafana安装
MogDB数据库如何完美适配Grafana及Prometheus?
Grafana是一个跨平台、开源的度量分析和可视化工具,可以通过对接各种数据源并作可视化展示。
数据和云
2022/02/25
6760
MogDB数据库如何完美适配Grafana及Prometheus?
Prometheus及Grafana监控服务的安装使用
Prometheus 是一个开放性的监控解决方案,通过 Node Exporter 采集当前主机的系统资源使用情况,并通过 Grafana 创建一个简单的可视化仪表盘。
易墨
2022/12/22
5920
使用Prometheus+Grafana对StarRocks数据库监控
StarRocks 提供两种监控报警的方案。企业版用户可以使用内置的 StarRocksManager,其自带的 Agent 从各个 Host 采集监控信息,上报至 Center Service,然后做可视化展示。StarRocksManager 提供邮件和 Webhook 的方式发送报警通知。如果您有二次开发需求,需要自行搭建部署监控服务,也可以使用开源 Prometheus+Grafana 方案,StarRocks 提供了兼容 Prometheus 的信息采集接口,可以通过直接连接 BE 或 FE 的 HTTP 端口来获取集群的监控信息。
AiDBA宝典
2023/08/10
1.1K0
使用Prometheus+Grafana对StarRocks数据库监控
浅谈Prometheus的数据存储
Prometheus内部主要分为三大块,Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据,Storage是负责将采样数据写磁盘,PromQL是Prometheus提供的查询语言模块
仙人技术
2021/08/31
4.3K0
浅谈Prometheus的数据存储
Prometheus + Grafana详解
Prometheus 是一个开源监控系统,它前身是 SoundCloud的告警工具包。从 2012 年开始,许多公司和组织开始使用 Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖于任何公司。为了强调这点和明确该项目治理结构,Prometheus 在 2016 年继Kurberntes 之后,加入了 Cloud Native Computing Foundation。
KaliArch
2019/09/29
4.9K0
Prometheus + Grafana详解
Prometheus+Grafana
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。现在最常见的Docker、Mesos、Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
派大星在吗
2021/12/05
1.1K0
Grafana Prometheus Altermanager
Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件、微信、钉钉、Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等,是一款很好用的告警通知系统。
小陈运维
2022/11/12
9580

相似问题

如何使用grafana可视化prometheus端点度量

28

使用Prometheus和Grafana可视化EC2元数据

10

prometheus (或grafana)查询以评估grafana loki使用的存储?

188

Grafana/Prometheus将多个ips可视化为查询

12

使用Jhipster与Prometheus/Grafana

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文