JavaScript: sort函数

sort方法能够根据一定条件对数组元素进行排序。如果调用sort方法时没有传递参数,则按照字母顺序对数组中的元素进行排序

数组排序
示例1 对字符串数组进行排序

var a = ['a', 'c', 'd', 'b']
a.sort()
console.log(a) //["a", "b", "c", "d"]

示例2 对字符串数组进行排序

var a = ["aba", "baa", "aab"]
a.sort()
console.log(a) // ["aab", "aba", "baa"]

注:
1、如果元素不是字符串,则sort方法会把数组中的元素都转换成字符串,在进行排序(没有传递参数时)
2、在排序时,sort方法将根据元素值进行逐位比较,而不是根据字符串的个数进行排序。先比较每个元素的第一个字符,在第一个字符相同的情况下,再比较第二个字符,依次类推
3、在任何情况下,数组中undefined的元素都被排列在数组末尾
5、sort方法是在原数组基础上进行排序的,不会创建新的数组

使用排序函数

根据其它顺序执行操作时,需要为该方法提供一个函数参数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字
排序函数应该具有两个参数a和b,返回值如下:

  • a小于b,在排序后的数组中a应该出现在b之前,返回一个小于0的值
  • a等于b,a与b的相对位置不变,返回0
  • a大于b,a应该出现在b的后面,返回一个大于0的值

示例1 按从小到大顺序排序(应该采用的是冒泡的思想)

var a = [1, 3, 2, 4]
function fn(a, b) {
	return a - b   //从小到大
	//return b - a  从大到小
}
console.log(a.sort(fn))   //[1, 2, 3, 4]

示例2 根据奇偶性质排列数组

var a=[1,2,3,4,5,6]
function fn(a,b){   //如果不好立即,就假设a=1,b=2
	var a=a%2   //获取a的奇偶性,a=1%2=1,奇数
	var b=b%2   //获取b的奇偶性,b=2%2=0,偶数
	if(a==0) return -1;  //a是偶数的话排在左边
	if(b==0) return 1;   //b是偶数的话排在右边
}
console.log(a.sort(fn))  //[2, 4, 6, 1, 3, 5]

两个if语句挺难理解的,实际情况如下:

//a和b都是偶数时,a在左边b在右边
if(a==0&&b==0) return -1;
//a和b都是奇数时,a在左边b在右边
if(a==1&&b==1) return -1;
//a是奇数b是偶数,a在右边b在左边
if(a==1&&b==0) return 1;
//a是偶数b是奇数,a在左边b在右边
if(a==0&&b==1) return -1;

//从上面可以得到,只要a是偶数返回-1即可;b是偶数返回1即可(ab都是偶数,按第一中情况

示例3 把浮点数和整数分开排列

function f(a, b) {
	if (a > Math.floor(a)) return 1; //如果a是浮点数,则调换位置
	if (b > Math.floor(b)) return -1; //如果b是浮点数,则调换位置
}
var a = [1, 3.14, 5.2, 6, 7]
console.log(a.sort(f))   //[1, 6, 7, 5.2, 3.14]
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值