JavaScript排序sort()方法(解决null、undefined、0之间的排序(混乱)问题)

sort 方法提供的排序方法中,如果返回的数字是 0 那么会保持原顺序,如果返回的数字 >0 那么会将 a 至于 b 之后,如果返回的数字 < 0 那么会将 a 至于 b 之前。

如果遇到字段可能是 undefined,那么我们需要特殊判断处理下。

首先判断如果 a,b 的排序字段都是 undefined 返回 0 保持原顺序。

再判断如果 a 的字段是 undefined 但 b 的排序字段存在则返回 >0 将 a 至于 b 之后。

再判断 b 的排序字段如果是 undefined 但 a 的排序字段存在则返回 <0 将 a 至于 b 之前。

最后 a,b 的排序字段都存在时,使用 a,b 的排序字段计算后的返回结果判断顺序

function sortArray(propName,sort='asc') {return function (obj1, obj2) {let val1 = obj1[propName];let val2 = obj2[propName];if (val1 === null && val2 === null) {return 0;}if(val1 === null){return 999;}if(val2 === null){return -999}if (typeof val1 === 'string' && typeof val2 === 'string') {if (val1 < val2) {return 1;} else if (val1 > val2) {return -1;}return 0;}return sort === 'asc'?val1 - val2:val2 - val1;}
}

参考连接:JavaScript排序sort()方法(解决null、undefined、0之间的排序(混乱)问题)_. . . . .的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识DHT11温湿度传感器并制作温度报警器

Arduino UNO Arduino IDE开发环境 Arduino DHT11温湿度传感器 ​ 一、认识Arduino的DHT11温度湿度传感器 DHT传感器由电容式湿度传感器和热敏电阻两部分组成。除此之外&#xff0c;模块内部还有一些模拟信号到数字信号的转换&#xff0c;将温度湿度以数字信号的方式输…

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例 声明式 UI ArkTS以声明方式组合和扩展组件来描述应用程序的UI&#xff0c;同时还提供了基本的属性、事件和子组件配置方法&#xff0c;帮助开发者实现应用交互逻辑。 如果组件的接口定义没有包…

Cesium 展示——新增需求和分析

文章目录 二三维视图的打点飞线&#xff0c;二三维实现联动需求分析 模型点击事件需求分析 二三维标绘图标&#xff0c;依比例和不依比例缩放需求分析二维标绘图标依比例缩放不依比例缩放 三维标绘图标依比例缩放不依比例缩放 经纬度和地名互查需求分析经纬度转地名地名转经纬度…

编织魔法——我与计算机的不解之缘

一、为什么当初选择计算机行业 小时候&#xff0c;我就对电脑充满了好奇。每次看到屏幕上闪烁的光标&#xff0c;我都觉得那是一种神秘的召唤。当我第一次听说“程序员”这个词&#xff0c;我就知道那是我梦寐以求的职业。因为&#xff0c;我梦想成为神奇的码农&#xff0c;我想…

基于HTML 实现的示波器-含完整源码

完整资料下载连接 基于HTML 实现的示波器-含jshtmlcss完整源码 改源码是在桌面 PC 上设计的&#xff0c;分辨率为 1920 x 1080 像素&#xff0c;但宽高像素比为 1.4 到 1.6 的任何分辨率都将产生良好的图像。它适用于以下浏览器的最新版本&#xff1a;Internet Explorer、Edge、…

Smart Git报警unable to unlink old

问题现象 文件改错了&#xff0c;想丢弃修改&#xff0c;结果Smart Git提示这个 解决思路 问一下chat GPT 他提供的234明显是错误答案&#xff0c;1和5都是删除文件&#xff0c;于是把这个文件删了&#xff0c;在丢弃删除操作看看&#xff0c;然后就还原文件了。

高效且实用的表单配置方式:低代码表单上传文件后即刻回显

在现代业务处理流程中&#xff0c;表单上传文件功能的实现已经变得日益重要。而对于用户在上传文件后能够即时看到文件名称的需求&#xff0c;更是对于表单设计的一个基本期望。为了满足这一期望&#xff0c;JVS低代码表单提供了一种高效且实用的配置方式&#xff0c;使得文件名…

以满足全球日益增长的能源需求

在&#xff0c;以满足全球日益增长的能源需求。我们以创新为动力&#xff0c;推出太阳能发电纸系列&#xff0c;将绿色能源与现代科技完美结合&#xff0c;开启了一个全新的绿色能源时代。 太阳能发电纸系列它以创新的设计和高效的功能&#xff0c;将太阳能发电技术推向了一个…

MySql 知识点汇总

目录 MySql 知识点汇总1、基础概念1、数据库三范式是什么?2、MySql的事务是什么?3、事务的 ACID 特性是什么?4、并发事务带来哪些问题?5、事务的四个隔离级别及其区别?6、Mysql中有哪几种锁?7、MySql 索引了解8、MySql默认引擎的区别2、MySQL优化方面1、索引知识点:1>…

【C++11(一)】右值引用以及列表初始化

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; C11 1. 前言2. 统一的列表初始化3. initializer…

SPM/SCM 流量跟踪体系

SPM SPM&#xff08;shopping page mark&#xff0c;导购页面标记&#xff09; 是淘宝社区电商业务&#xff08;xTao&#xff09;为外部合作伙伴&#xff08;外站&#xff09;提供的跟踪引导成交效果数据的解决方案 注&#xff1a;也有解释 SPM 为超级位置模型(Super Position…

ant Design of vue 实现table每栏动态根据条件设置背景颜色(table栏每一栏颜色自定义)

效果图&#xff1a; 注意效果图中&#xff0c;table的表格每一栏颜色都要不一样 代码实现&#xff1a; 页面结构&#xff1a; <a-table :columns"columns" :loading"tableLoading" :data-source"tableData" rowKeyid size"middle&quo…

Spring 向页面传值以及接受页面传过来的参数的方式

一、从页面接收参数 Spring MVC接收请求提交的参数值的几种方法&#xff1a; 使用HttpServletRequest获取。 RequestMapping("/login.do") public String login(HttpServletRequest request){ String name request.getParameter("name") String pa…

5-20V升降压转12V2A自动升降压芯片:AH6971高效、稳定、安全

5-20V升降压转12V2A自动升降压芯片&#xff1a;高效、稳定、安全 随着科技的飞速发展&#xff0c;各种电子设备对电源的要求越来越高。一款高效、稳定、安全的电源芯片成为众多工程师亟待解决的问题。今天&#xff0c;我们就来为大家介绍一款5-20V升降压转12V2A的自动升降压芯…

最近在对接电商供应链,说说开放平台API接口

B2B电商开放平台的设计需要从以下几面去思考&#xff1a; 开放平台API接口的接入&#xff0c;主要是从功能需求的角度&#xff0c;设计满足业务需求的接口及对应的字段&#xff1b; 平台与商家之间信息的对接&#xff0c;对接的方法有哪些&#xff1f;对接过程中需要可能会遇到…

GPU深度学习性能的三驾马车:Tensor Core、内存带宽与内存层次结构

编者按&#xff1a;近年来&#xff0c;深度学习应用日益广泛&#xff0c;其需求也在快速增长。那么&#xff0c;我们该如何选择合适的 GPU 来获得最优的训练和推理性能呢&#xff1f; 今天&#xff0c;我们为大家带来的这篇文章&#xff0c;作者的核心观点是&#xff1a;Tensor…

NET Core迁移前工作

前段时间迁移.NET Core做了大量的试水和评估&#xff0c;今天整理一下分享给大家。大致有以下几个部分&#xff1a; 1. .NET Core的由来 2. 为什么要迁移.NET Core 3. .NET Core3.X主要特性 4. .NET Standard和.NET Core 5. .NET Core Roadmap&版本选择 接下来&#…

Linux4.8、环境变量续

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解&#xff0c;那么建议先看完这篇文章&#xff1a;环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…

代码随想录算法训练营第五十三天

1143.最长公共子序列 稍微思考即可通过&#xff0c;但是dp状态转移方程并不明确&#xff0c;靠感觉写的。解答和我想的也差不多。 1035.不相交的线 就是最长公共子序列的抽象版本&#xff0c;解答方式一模一样&#xff0c;不过对于抽象问题&#xff0c;要能将其对应为做过的…

pyspark读取数据库性能优化

当数据量很大时&#xff0c;读取方式 dbtable写sql语句 dbtable和query配置不能同时存在&#xff0c;选一种即可。里面都可以直接写sql语句 jdbcDF spark.read.format("jdbc")\.option("driver",driver)\.option("url",url)\.option("d…