当前位置: 首页 > news >正文

js通过时间对JSON中的数据进行排序

需求

现在需要通过每一个数据段的date字段对数组的整体数据进行排序!

元数据如下:

var data = [{"filename": "123","date": "2024-05-10 19:53:57","stand": "GB-14","filter": "Gauss","ys": 0.008,"yc": 0.8,"data": [23,23,23]},{"filename": "17112","date": "2024-05-10 19:54:49","stand": "GB-14","filter": "Gauss","ys": 0.008,"yc": 0.8,"data": [65535,65535,65535]},{"filename": "556","date": "2024-05-10 19:55:51","stand": "GB-14","filter": "Gauss","ys": 0.008,"yc": 0.8,"data": [2,85,118]}
]

 Array.prototype.sort()

这里我们采用Array.prototype.sort()

Array.prototype.sort()默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。

语法

1、sort()

2、sort(compareFn)

compareFn:(可选)定义排序顺序的函数。返回值应该是一个数字,其符号表示两个元素的相对顺序:

如果 a 小于 b,返回值为负数,如果 a 大于 b,返回值为正数,如果两个元素相等,返回值为 0。NaN 被视为 0。该函数使用以下参数调用:        
        a
        第一个用于比较的元素。不会是 undefined。        
        b
        第二个用于比较的元素。不会是 undefined。

返回值

经过排序的原始数组的引用。注意数组是就地排序的,不会进行复制。

compareFn(a, b) 返回值排序顺序
> 0a 在 b 后,如 [b, a]
< 0a 在 b 前,如 [a, b]
=== 0保持 a 和 b 原来的顺序

所以,比较函数形式如下:

function compareFn(a, b) {if (根据排序标准,a 小于 b) {return -1;}if (根据排序标准,a 大于 b) {return 1;}// a 一定等于 breturn 0;
}

更正式地说,为了确保正确的排序行为,比较函数应具有以下属性:

  • 纯函数:比较函数不会改变被比较的对象或任何外部状态。(这很重要,因为无法保证比较函数将在何时以及如何调用,因此任何特定的调用都不应对外部产生可见的效果。)
  • 稳定性:比较函数对于相同的输入对应始终返回相同的结果。
  • 自反性compareFn(a, a) === 0
  • 反对称性compareFn(a, b) 和 compareFn(b, a) 必须都是 0 或者具有相反的符号。
  • 传递性:如果 compareFn(a, b) 和 compareFn(b, c) 都是正数、零或负数,则 compareFn(a, c) 的符号与前面两个相同。

符合上述限制的比较函数将始终能够返回 10 和 -1 中的任意一个,或者始终返回 0。例如,如果比较函数只返回 1 和 0,或者只返回 0 和 -1,它将无法可靠地排序,因为反对称性被破坏了。一个总是返回 0 的比较函数将不会改变数组,但仍然是可靠的。

解决需求

代码如下:

sortByDate(attr, rev){if (rev == undefined){rev=1}else{(rev)?1:-1}return function(a,b){a = a[attr]b = b[attr]if (a<b){return rev*-1}if (a>b){return rev*1}return 0}
}// attr:根据该属性排序;
// rev:升序1或降序-1,不填则默认为1
data. Sort(sortByDate('date',-1))console.log(data)

相关文章:

js通过时间对JSON中的数据进行排序

需求 现在需要通过每一个数据段的date字段对数组的整体数据进行排序&#xff01; 元数据如下&#xff1a; var data [{"filename": "123","date": "2024-05-10 19:53:57","stand": "GB-14","filter":…...

leetcode206-Reverse Linked List

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 分析 用一个指针记录当前位置&#xff0c;另外一个指针记录当前位置的前一个位置&#xff0c…...

云计算第十二课

安装虚拟机 第一步新建虚拟机 选择自定义安装 下一步 选择稍后安装操作系统 选择系统类型和版本 选择虚拟机文件路径&#xff08;建议每台虚拟机单独存放并且路径不要有中文&#xff09;点击下一步 选择bios下一步 选择虚拟机处理器内核数量 默认硬盘或者自行调大硬盘 选择虚…...

【elasticsearch】慢查询替代查询审计的尝试

【elasticsearch】慢查询替代查询审计的尝试 使用了es有两年了&#xff0c;突然发现一个&#xff0c;es没有查询审计日志&#xff0c;某个用户查询了某个索引的审计。 找了官方文档和社区的回复都是说使用slow log替代慢查询。 尝试一下。 参考链接1&#xff1a;https://discus…...

腐烂的橘子BFS

题目&#xff1a; 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子…...

什么是分库分表

读写分离主要应对的是数据库读并发&#xff0c;没有解决数据库存储问题。试想一下&#xff1a;如果 MySQL 一张表的数据量过大怎么办? 答案当然是分库分表 什么是分库&#xff1f; 分库 就是将数据库中的数据分散到不同的数据库上&#xff0c;可以垂直分库&#xff0c;也可…...

pytest并发执行用例方案

背景 开始做新项目的UI自动化&#xff0c;需要考虑用例的并发执行&#xff0c;因为之前做的项目是通过插件pytest-parallel 0.1.1 pytest-multithreading-allure 1.0.8来实现的&#xff0c;所以这次也打算用此方法&#xff0c;然而在实际使用过程中发现一些问题。 问题一 通…...

VO,PO,DTO

DTO&#xff08;Data Transfer Object&#xff09;数据传输对象 前后端之间的传输时使用 比如前端登录请求的请求参数有username&#xff0c;password&#xff0c;但后端pojo类user有username&#xff0c;password&#xff0c;birthday&#xff0c;gender时&#xff0c;可以创…...

Java设计模式-工厂

Java设计模式中&#xff0c;工厂模式主要包括普通工厂模式以及抽象工厂模式&#xff0c;普通工厂模式是用于制造输出不同类型的对象&#xff0c;抽象工厂模式是用于制造输出不同类型的普通工厂&#xff0c;本文主要描述工厂模式的基本用法。 如上所示&#xff0c;使用普通工厂模…...

【JavaEE】【1.3 Servlet】1.3.6 监听

什么是Servlet上下文&#xff1f; Servlet上下文&#xff08;Servlet Context&#xff09;是Java Servlet技术中的一个概念&#xff0c;它代表了一个Web应用程序的上下文环境。在Servlet规范中&#xff0c;每个Web应用程序都有一个唯一的Servlet上下文对象&#xff0c;该对象在…...

C#泛型委托

在C#中&#xff0c;delegate 关键字用于声明委托&#xff08;delegates&#xff09;&#xff0c;委托是一种类型安全的函数指针&#xff0c;允许你传递方法作为参数或从方法返回方法。有时我们需要将一个函数作为另一个函数的参数&#xff0c;这时就要用到委托&#xff08;Dele…...

从零开始精通RTSP之多播传输

概述 多播&#xff08;Multicast&#xff09;是一种高效的网络通信技术&#xff0c;它允许一台或多台主机&#xff08;可称为多播源&#xff09;发送单一数据包到多个目标主机&#xff08;可称为多播组的成员&#xff09;&#xff0c;而只有属于该多播组的接收者才会接收到这些…...

(五)STM32F407 cubemx IIC驱动OLED(2)硬件篇

这篇文章主要是个人的学习经验&#xff0c;想分享出来供大家提供思路&#xff0c;如果其中有不足之处请批评指正哈。   废话不多说直接开始主题&#xff0c;本人是基于STM32F407VET6芯片&#xff0c;但是意在你看懂这篇文章后&#xff0c;不管是F1,F4,H7等一系列系统硬件IIC配…...

头歌实践教学平台:CG1-v1.0-点和直线的绘制

第5关&#xff1a;0<k<1直线绘制-中点算法 一.任务描述 根据下面要求&#xff0c;在右侧修改代码&#xff0c;绘制出预期输出的图片。平台会对你编写的代码进行测试。 1.本关任务 掌握一种基本图形元素光栅化算法&#xff0c;利用OpenGL实现直线光栅化的中点画线算法…...

java基础之面向对象的思想

一、面向对象和面向过程的编程思想对比 面向过程&#xff1a;是一种以过程为中心的编程思想&#xff0c;实现功能的每一步&#xff0c;都是自己实现的&#xff08;自己干活&#xff09;。 面向对象&#xff1a;是一种以对象为中心的编程思想&#xff0c;通过指挥对象实现具体的…...

红黑树的理解和简单实现

目录 1. 红黑树的概念和性质 2. 红黑树的插入 2.1. 情况一&#xff1a;新增节点的父亲为空 2.2. 情况二&#xff1a;新增节点的父亲非空且为黑色节点 2.3. 情况三&#xff1a;当父亲为红节点&#xff0c;叔叔存在且为红 2.3.1. 当祖父为根节点的时候 2.3.2. 当祖父不是根…...

发表博客之:gemm/threadblock/threadblock_swizzle.h 文件夹讲解,cutlass深入讲解

文章目录 [发表博客之&#xff1a;gemm/threadblock/threadblock_swizzle.h 文件夹讲解&#xff0c;cutlass深入讲解](https://cyj666.blog.csdn.net/article/details/138514145)先来看一下最简单的struct GemmIdentityThreadblockSwizzle结构体 发表博客之&#xff1a;gemm/th…...

【C语言项目】贪吃蛇(下)

个人主页~ 源码在Gitee仓库~ 上一篇贪吃蛇&#xff08;上&#xff09;~ 贪吃蛇 四、核心的实现游戏测试1、GameStart&#xff08;1&#xff09;控制台窗口大小和名字设置&#xff08;2&#xff09;光标隐藏&#xff08;3&#xff09;打印欢迎界面&#xff08;4&#xff09;创建…...

【Unity实战|热更】Addressable读取SO文件报错解决

情景再现 假定你有一个Unity工程&#xff0c;使用了HybridCLR和Addressable&#xff0c;SO文件存放在Addressable中。热更加载后进入游戏场景出现了SO文件读取报错&#xff1a; UnityEngine.AddressableAssets.InvalidKeyException: Exception of type UnityEngine.Addressab…...

Web自动化 - selenium

文章目录 一、selenium的使用selenium的安装 二、元素1. 定位选择元素1.id 定位2. class_name 定位find_element 和 find_elements的区别3. TAG_NAME 定位4. 超链接 定位 2. 操控元素1. 查询内容2. 获取元素文本内容3. 获取元素属性 3. 浏览器常用操作API4. 鼠标操作 - perform…...

3步高效下载抖音无水印视频:douyin_downloader专业解决方案完整指南

3步高效下载抖音无水印视频&#xff1a;douyin_downloader专业解决方案完整指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载&#xff1a;https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader …...

LabVIEW 2021生成EXE后报表报错?手把手教你添加NIReport.llb和LVClass文件

LabVIEW报表生成避坑指南&#xff1a;从源码到EXE的完整解决方案 在LabVIEW开发过程中&#xff0c;报表生成功能是许多工程师不可或缺的工具。然而&#xff0c;当我们将精心编写的程序打包成可执行文件&#xff08;EXE&#xff09;时&#xff0c;常常会遇到一个令人头疼的问题&…...

Lenovo Legion Toolkit:拯救者笔记本的终极性能优化指南

Lenovo Legion Toolkit&#xff1a;拯救者笔记本的终极性能优化指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 你是否曾…...

SmartDock:让Android设备拥有桌面级生产力的智能启动器

SmartDock&#xff1a;让Android设备拥有桌面级生产力的智能启动器 【免费下载链接】smartdock A user-friendly desktop mode launcher that offers a modern and customizable user interface 项目地址: https://gitcode.com/gh_mirrors/smar/smartdock 你是否曾经想过…...

【NotebookLM林业科研提效指南】:3大AI笔记工作流重构传统林学研究范式

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM林业科学研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具&#xff0c;专为文献理解与知识整合设计。在林业科学研究中&#xff0c;它可高效处理林学专著、野外调查报告、遥感解译文档、…...

高维光谱数据分析研究与光谱型纳米流式检测系统数据采集处理软件的开发与化学生物学应用【附代码】

✨ 长期致力于光谱型纳米流式检测技术、光谱解耦算法、降维算法、免疫分型、细菌自发荧光研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于泊松回归…...

强烈的“似曾相识“感:由于人类左右大脑处理信息的速度并非完全同步,在某些特殊瞬间,这个流程会被打乱

海马效应(既视现象) 目录 海马效应(既视现象) 核心科学原理 高发场景与人群 典型例子 海马效应,科学上称为既视现象(Dj vu),是指人在从未真实经历过的当下场景中,突然产生强烈的"似曾相识"感,误以为眼前的一切曾经发生过的认知错觉。它并非玄学中的"…...

车载ETH数据链路层

以太网帧协议是​​数据链路层​​的核心封装格式,遵循IEEE 802.3标准。 标准以太网帧结构(IEEE 802.3)​: 前导码(7B)| 帧起始符(1B)| 目标 MAC (6B) | 源 MAC (6B) | ​​EtherType (2B)​​ | Payload (46-1500B) | FCS (4B) | ​1. 前导码 (Preamble)​​ 长度​…...

5分钟终极指南:用HunterPie轻松提升《怪物猎人:世界》狩猎效率

5分钟终极指南&#xff1a;用HunterPie轻松提升《怪物猎人&#xff1a;世界》狩猎效率 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirr…...

别只盯着SysTick_Config:用CubeMX配置STM32的SysTick中断并驱动OLED(附代码)

从CubeMX到OLED&#xff1a;SysTick中断在HAL库中的实战应用 引言 在嵌入式开发领域&#xff0c;精确的时间控制往往是项目成功的关键。对于STM32开发者而言&#xff0c;SysTick定时器作为Cortex-M内核的标准配置&#xff0c;提供了简单可靠的时间基准解决方案。不同于传统寄存…...