sort()整数、浮点数未按大小排序问题

博客指出JS中使用sort()对一维整数和浮点数数组排序时,在整数部分位数不一致的情况下会出现问题。分析认为问题源于sort()函数内部机制,采用自定义排序解决该问题,介绍了arr.sort()中function(a,b)方法的返回值规则,最终解决排序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个js一维整数数组的排序代码如下:

	var arr = [1, 3, 5, 2, 5];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1
	//1: 2
	//2: 3
	//3: 5
	//4: 5

而当数组的当整数部分位数不一致时,出现问题的,比如:

	var arr = [1, 30, 5, 2, 5];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1
	//1: 2
	//2: 30
	//3: 5
	//4: 5

同样的当数组为一维浮点数时,当整数部分位数一致时,是没有问题的,比如:

	var arr = [1.12, 1.35, 1.01, 1.26, 1.18];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1.01
	//1: 1.12
	//2: 1.18
	//3: 1.26
	//4: 1.35

而整数部分位数不一致时,也会出现以下问题。比如:

	var arr = [10.12, 9.23, 10.01, 20.26, 10.18];
	//var arr = ['10.12', '9.23', '10.01', '20.26', '10.18']; //结果一致
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 10.01
	//1: 10.12
	//2: 10.18
	//3: 20.26
	//4: 9.23

这个问题的应当来自于sort()函数的内部机制,这里暂时不去考虑。针对数字排序的问题,采用自定义排序解决,代码如下(一维整数同理可以解决,不再赘述):

	var arr = [10.12, 9.23, 10.01, 20.26, 10.18];
	console.log(arr.sort(function(a,b){return a-b}));
	//输出结果如下:
	//Array(5)
	//0: 9.23
	//1: 10.01
	//2: 10.12
	//3: 10.18
	//4: 20.26

arr.sort()中function(a,b){}方法,其中a、b为数组arr中的任意两个值,方法中return返回值大于0正序排列,小于0倒序排列
*等于0,不为纯数字等问题暂不考虑
至此,解决sort()整数、浮点数未按大小排序问题。欢迎大家对此提出自己的看法,本文会持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值