js 关于数组排序的方法

在JavaScript中,数组排序主要有两种主要方法:Array.prototype.sort() 和自定义排序函数。

  1. Array.prototype.sort()

sort() 方法按照字符串Unicode码点顺序对数组元素进行排序,并返回数组。对于非字符串类型的数组元素,sort() 方法会先将它们转换为字符串,然后再进行排序。

基本用法:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort();
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9],因为元素被转换为字符串后再排序

但是,如果你希望按数字大小排序,你可以提供一个比较函数作为 sort() 的参数:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort(function(a, b) {
return a - b; // 升序排序
});
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9]

如果你希望降序排序,只需改变比较函数的返回值:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort(function(a, b) {
return b - a; // 降序排序
});
console.log(arr); // 输出: [9, 6, 5, 5, 2, 1]
  1. 自定义排序函数

虽然 sort() 方法足以满足大多数排序需求,但你也可以编写自己的排序函数。这通常涉及到使用如冒泡排序、插入排序、选择排序、快速排序等算法。但请注意,对于大型数组,JavaScript内置的 sort() 方法(当使用正确的比较函数时)通常比简单的自定义排序算法更有效。

例如,一个简单的冒泡排序实现可能如下所示:

 

javascript复制代码

function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) { // 相邻元素两两对比
let temp = arr[j + 1]; // 元素交换
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
let arr = [5, 2, 9, 1, 5, 6];
arr = bubbleSort(arr);
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9]

但请注意,对于大型数组,这种简单的冒泡排序实现可能不是最高效的。在实际应用中,你通常会使用更先进的排序算法,或者简单地使用JavaScript内置的 sort() 方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用C++ __builtin_expect优化程序性能后,程序体积不改变原因

结论 使用__builtin_expect优化程序性能&#xff0c;开启-O3的情况下&#xff0c;确实程序的体积可能不改变&#xff0c;但是还是会产生优化效果。 测试代码 不使用__builtin_expect #include <iostream>void fun(int a, int b) {// 不使用__builtin_expectif (a <…

poisson分布及其stata实现

1. 概念 泊松回归&#xff08;Poisson regression&#xff09;是用来为计数资料和列联表建模的一种回归分析。泊松回归假设反应变量Y是泊松分布&#xff0c;并假设它期望值的对数可被未知参数的线性组合建模。泊松回归模型有时&#xff08;特别是当用作列联表模型时&#xff0…

libcity笔记:详细流程(以DeepMove为例)

0 前置操作 这边我选择了gowalla的前1000条数据做例子&#xff1a; 0.1 生成样例dyna import pandas as pd geopd.read_csv(/home_nfs/liushuai/Bigscity-LibCity/raw_data/gowalla_test/gowalla.dyna)geo_tstgeo.iloc[:1000,:] geo_tst geo_tst.to_csv(/home_nfs/liushuai/…

电脑小工具总结(下载哔哩哔哩视频等)

哔哩哔哩视频下载器 https://www.jijidown.com/

HFSS-day3-HFSS的工作界面

工作界面也称为用户界面&#xff0c;是HFSS软件使用者的工作环境:了解、熟悉这个工作环境是掌握HFSS软件使用的第一步 HFSS工作环境介绍 1.HFSS工作界面简单的组成说明2.工作界面中各个工作窗口功能主菜单工具栏项目管理窗口属性窗口信息管理窗口进程窗口三维模型窗口 3.HFSS主…

【ITK配准】第七期 尺度(Metric)- 均方Metric

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK中的均方Metric,即itk::MeanSquaresImageToImageMetricv4,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力…

学完 C++ 基本语法后,您就可以开始学习 Qt 了。

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;这些基本语法包括变量、类型、循环、判断、指针…

【编译器识别】2024深圳杯C题24页参考论文+1-3小问完整解题代码

一、问题研究 【编译器识别】2024深圳杯C题24页参考论文1-3小问完整解题代码https://www.jdmm.cc/file/2710545/ 为了回答这些问题&#xff0c;我们需要进行一系列的编译实验、分析编译结果&#xff0c;并构建判别函数。以下是对这些问题的初步分析和可能的方法&#xff1a; …

更专业的汽车软件研发工具链,怿星重磅发布新产品

怿星科技在2024北京国际车展同期举办主题为“创新引领未来——聚焦智能汽车软件新基建”的新产品发布会&#xff0c;重磅推出1款绝对优势产品和4套场景解决方案。同时举行了4场热点技术研讨&#xff1a;国产工具链的机遇与挑战、新架构下的的车载DDS应用探索及测试方案介绍、软…

uniapp实现下拉刷新效果-uniapp原生接口

onPullDownRefresh | uni-app官网 1、需要在 pages.json 里&#xff0c;找到的当前页面的pages节点&#xff0c;并在 style 选项中开启 enablePullDownRefresh 2、生命周期中添加onPullDownRefresh&#xff0c;下拉时获取数据 3、处理完数据后&#xff0c;停止下拉效果stopPul…

ubuntu安装mysql本地navicat连接使用

ubuntu安装mysql&#xff0c;选择在线安装非常快&#xff1a; 安装 sudo apt install -y mysql-server-8.0先下载资源&#xff08;指定版本下载&#xff09; 如果下不下来&#xff0c;遇到报错多半是 工具需要更新了 sudo apt update更新一下即可&#xff08;sudo就是权限更…

深入分析网络智能摄像头的RTSP协议安全风险

本文为转载&#xff0c;原作者&#xff1a;山石网科安全技术研究院 网络摄像头作为现代安防体系的关键组成部分&#xff0c;已经广泛应用于各类场所&#xff0c;包括交通枢纽、教育机构、企业办公区、零售商场等公共和私人领域。它们主要负责提供实时视频监控&#xff0c;以加…

中国棋手再夺世界桂冠,李轩豪问鼎第五届梦百合杯世界围棋公开赛

5月4日,第五届“MLILY梦百合0压床垫杯”世界围棋公开赛决赛在江苏省如皋市圆满结束,中国棋手党毅飞和李轩豪展开巅峰对决,最终,李轩豪执白168手战胜党毅飞,以3比1的比分夺得桂冠并获得由MLILY梦百合赞助的180万冠军奖金,这是李轩豪个人职业生涯中首次问鼎世界冠军,成为世界棋坛…

等离子刻蚀中的化学键是如何断裂与生成的?

知 识星球&#xff08;星球名&#xff1a; 芯片制造与封测社区&#xff0c;星球号&#xff1a; 63559049&#xff09;里的学员问&#xff1a; 我看 到一本书上 说刻蚀SiO2需要C&#xff0c;这个C会和SiO2中的O结合。 较弱的 si和f结合从而被刻蚀。 但是另一本书上写Si…

DI-engine强化学习入门(十)如何使用RNN——模型构建和包装

一、RNN简介 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类用于处理序列数据的神经网络。与传统的前馈神经网络不同&#xff0c;RNN引入了“内部状态”&#xff08;或称为“隐藏状态”&#xff09;&#xff0c;使得网络能够存储过去的信息&#xf…

初学C++——C++基础、变量、字面量、常量、数据类型、类型转换、变量命名规则、开发环境配置

文章目录 简介C 语言的特性C 开发环境配置C 变量&#xff0c;字面量和常量C 变量变量命名规则 C 字面量C 常量 C 数据类型C 基本数据类型派生数据类型 C 类型转换隐式类型转换C 显式转换 简介 C 是一种静态类型的&#xff0c;自由形式的&#xff08;通常&#xff09;编译的&…

python中如何遍历字典

1. 遍历字典的键key ① >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6)} >>> for key in d:print(str(key):str(d[key])) list:[1, 2, 3] 1:123 111:python3 tuple:(4, 5, 6) ② >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6…

2024年数维杯数学建模C题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

包装类~~

包装类的分类 针对八种基本数据类型相应的引用类型——包装类有了类的特点&#xff0c;就可以调用类中的方法 包装类和基本数据的转换 演示 包装类和 基本数据类型的相互转换&#xff0c;这里以int 和 Integer演示 jdk5前是手动装箱和拆箱方式 装箱&#xff1a;基本类型-&…

Temu、Shopee、阿里国际卖家如何利用自养号测评提升店铺排名

在流量为王的时代&#xff0c;流量无疑等同于销量和利润。对于temu、Shopee以及阿里国际的卖家们来说&#xff0c;关注流量成为了日常运营中不可或缺的一环。今天&#xff0c;我们将一同探讨和分析temu、Shopee及阿里国际的流量来源&#xff0c;帮助卖家们更有效地提升店铺流量…
最新文章