小白发现 不知道你有没有注意js当中的sort()函数

不知道你有没有注意js当中的sort()函数

哈喽哈喽,我是你们的金樽清酒,最近我在刷一些简单的leetcode的题目,其中有好多数组的题目,在对数组进行排序处理后可以使问题简单很多,但是最近一道题目中,我发现一直用的排序sort(),出问题了。

sort()排序的特点

  • sort()排序会改变原数组

如上图所示,我在浏览器中定义了一个,并且用了sort(),直接看nums,它的值是已经发生了改变的。 所以我们在leetcode当中用sort()会直接改变传入变量的值,不需要再用一个变量去存储。但是在做编程的话,最好是不要改变数组,要是一个纯函数。

sort()函数有什么问题呢? 存在负数排序就不准了

我们来看一个存在负数的例子

你看,是不是存在问题啦,并没有按照我们想要的方法排序,-2难道会比-4小嘛,而且后面的整数也没有按照我们的要求排序,那要是刷到有负数的题目就玩完啦

为什么会出现这种现象

因为sort()函数需要传入一个函数类型的参数,如果不是传函数参数的话,会以默认的方式进行排序,即按照字符编码的顺序进行排序。就好像上面的例子,在字符集中,-2的字符集会比-4要小,所以当我们没有传入函数参数的时候,就会出现上面的现象。

如何解决?

如何解决,这是一个好问题。那咱们就按照它原本的特性传入一个函数参数呗。

  • 升序
js 复制代码
let arr=[-3,-1,-2,3,5,1,2]
arr.sort(function(a,b){
retun a-b
})

排序成功

  • 降序
js 复制代码
let arr=[-3,-1,-2,3,5,1,2]
arr.sort(function(a,b){
retun b-a
})

排序成功

总结

sort()在js中可以将数组排序,但是会改变原函数,sort()里面要传入一个函数类型的参数,如果不传入参数则按照字符集来排序,那么存在负数的排序就会出现问题,要解决这个问题,我们就要在sort()当中传入函数参数sort(function(a,b) {return a-b })//升序 sort()当中传入函数参数sort(function(a,b) {return b-a })//降序。

在实践中发现问题,在实践中解决问题 自己发现解决的那就是自己的知识。

相关推荐
天选之女wow3 分钟前
【代码随想录算法训练营——Day52】图论——101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
算法·深度优先·图论
王六岁3 分钟前
🐍 前端开发 0 基础学 Python 入门指南:f-strings 篇
前端·javascript·python
一道雷8 分钟前
🚀 Vue Router 插件系统:让路由扩展变得简单优雅
前端·javascript·vue.js
辣辣y8 分钟前
Tailwind CSS 使用指南
前端·css
碧海银沙音频科技研究院11 分钟前
i2s封装成自己定义8路音频数据发送方法
arm开发·人工智能·深度学习·算法·音视频
做科研的周师兄14 分钟前
【机器学习入门】9.2:感知机的工作原理 —— 从模型结构到实战分类
人工智能·算法·机器学习·分类·数据挖掘
wgb040917 分钟前
vxe table 升级之后页面数据不显示解决方法
java·前端·javascript
集成显卡22 分钟前
Bun.js + Elysia 框架实现基于 SQLITE3 的简单 CURD 后端服务
开发语言·javascript·sqlite·bun.js
不去幼儿园42 分钟前
【启发式算法】狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍(Python)
python·算法·启发式算法·任务分配·集群智能