JavaScript中sort()函数的排序逻辑
📅 2026/7/28 14:52:19
👁️ 次浏览
在JavaScript中sort()函数默认会把数组的元素转换成字符串然后再进行排序。如果数组中的元素是 number 类型的那么得到结果可能和我们想的不一样。举例如下arr[50,90,1,10,2];// 比如 arr 数组直接使用 sort() 方法进行排序时会把该数组中的每个元素都转化成字符串然后再进行排序得到的结果为[1, 10, 2, 50, 90]// 我们期望的结果是[1, 2, 10, 50, 90];那么怎么样才能让数组 arr 使用 sort() 方法后得到想要的结果呢在使用 sort() 方法对 arr 数组进行排序时需要传入一个函数作为其参数。具体示例如下所示[1]// 需要排序的数组vararr[50,90,1,10,2];// 按照升序对arr中的元素进行排列的方法arrarr.sort((current,next){// 即按升序排序returncurrent-next;});// 上述代码使用sort()方法进行排序的实际思路如下所示// 1. current 50, next 90// current - next 50 - 90 -40// 由于 (current - next) 的结果为负数因此无需变数组元素的索引位置此时经过排序后的数组如下所示// [50, 90, 1, 10, 2];// 2. current 90, next 1// current - next 90 - 1 89// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [50, 1, 90, 10, 2];// 3. 此时sort()会判断arr 数组中 90 前面的两个元素是否进行过比较。如果没有进行过比较则需要进行比较处理。即// 此时需要比较的数组元素为 50 和 1即// current 50, next 1// current - next 50 - 1 49// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 50, 90, 10, 2];// 4. sort()能够识别数组中的两个元素是否已经进行过比较如果已经进行过比较那么不会重复再比较一次。此时current 和 next 的值如下所示// current 90, next 10// current - next 90 - 10 80// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 50, 10, 90, 2];// 5. current 50, next 10// current - next 50 - 10 40// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 10, 50, 90, 2];// 6. current 1, next 10// current - next 1 - 10 -9// 由于 (current - next) 的结果为负数因此无需改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 10, 50, 90, 2];// 7. current 90, next 2// current - next 90 - 2 89// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 10, 50, 2, 90];// 8. current 50, next 2// current - next 50 - 2 48// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 10, 2, 50, 90];// 9. current 10, next 2// current - next 10 - 2 8// 由于 (current - next) 的结果为正数因此需要改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 2, 10, 50, 90];// 10. current 1, next 2// current - next 1 - 2 -1// 由于 (current - next) 的结果为负数因此无需改变数组元素的索引位置此时经过排序后的数组如下所示// [1, 2, 10, 50, 90];// 自此使用sort()函数对数组中元素为number类型的数组完成了升序排序。如果要进行降序排列那么只需要把 current - next 修改 next - current 即可。参考文章[1] https://stackoverflow.com/questions/3423394/algorithm-of-javascript-sort-function[2]JavaScript的sort()方法的底层实现https://github.com/v8/v8/blob/ad82a40509c5b5b4680d4299c8f08d6c6d31af3c/src/js/array.js的第710行
1. 评估板的核心价值与TPIC7710EVM概述 在嵌入式系统、汽车电子或者工业控制的硬件开发流程里,从一颗芯片的数据手册到最终稳定可靠的量产产品,中间隔着一条名为“工程实现”的鸿沟。数据手册告诉你芯片能做什么,电气特性如何,但不…
📅 2026/7/28 14:52:19
1.适用于字符串的输出格式
Demo1:name "sunwukong"
print("hello,"name)运行结果:(1)此方法适用于字符串的拼接,拼接后的两字符串之间是没有空格的。
(2)但此方法只适用于字符串的输出…
📅 2026/7/28 14:51:15
在实际应用中,我们通过 http, https, tcp, udp, unix socket 等来传输数据,基本都是传输字符串,二进制数据,那么可不可以传递对象呢,答案是肯定的。
主要函数:序列化和反序列化
1、serialize ( mixed $valu…
📅 2026/7/28 14:51:15
行业发展引言随着金税四期的全面推广,全税种税务CT扫描作为企业财税合规的重要工具,逐渐成为市场关注的焦点。这一技术通过深度解析企业的税务数据,提供精准的风险筛查和预警,帮助企业提前规避潜在的税务风险。本文将从供给现状、…
📅 2026/7/28 17:39:38
我们的MVC框架的入口文件中index.php中有样几行代码// 加载框架文件
require(__DIR__ . /../fastphp/Fastphp.php);// 实例化框架类
(new fastphp\Fastphp($config))->run();fastphp.php是我们mvc框架的核心文件,通过以下的代码片断,我们了解一下它主…
📅 2026/7/28 17:39:38
灵感捕手:用 Python 建立全年灵感蓄水池,年末集中孵化创新项目。说明:本文为纯技术实践分享,不涉及任何课程推广、营销引流或商业产品。所有代码可在本地离线运行。一、实际应用场景描述在《心理健康与创新能力》课程中࿰…
📅 2026/7/28 17:39:38
昨天遇到一道比较有意思的题,特来分享一下。
题目描述一排抽屉,编号1到10,每个抽屉装有红色小球,一共100个,第一个抽屉装有16个,编号相邻的三个抽屉装的红球个数相等,求第8个抽屉最多可能有多少…
📅 2026/7/28 17:39:38
如何免费制作游戏MOD?ExtractorSharp游戏资源编辑器的终极指南 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp
想为喜欢的游戏制作个性化外观,却苦于找不到合适的工具&…
📅 2026/7/28 17:39:38
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/28 17:38:38
告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub
你是否也曾为官方Om…
📅 2026/7/28 0:00:45
做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
📅 2026/7/28 0:00:46
2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
📅 2026/7/28 0:00:46
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/28 1:13:29
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/28 1:13:29
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/28 1:13:29
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/28 7:13:45
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/28 5:13:40