js sort函数

sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。
由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。
也就是说直接使用sort来对数组进行排序的话,它是根据元素的Unicode来排序的,如:

var arr=[100,23,1,1000,2]
console.log(arr.sort())

运行结果:
运行结果
但可以向sort传入一个参数(该参数为函数),来对数组进行升序或降序排列
1.当要比较的元素为Number类型时:

function sheng(a,b){
	return a-b  //会将数组升序排列
}
function jiang(a,b){
	return b-a //会将数组降序排列
}
var arr=[100,23,1,1000,2] 
console.log(arr.sort(sheng))//1,2,23,100,1000
console.log(arr.sort(jiang))//1000,100,23,2,1

2.当要比较的元素为string类型时:

// 找return 1的那项,如果前面形参的大于后面的形参,则为升序,反之则为降序
function sheng(a,b){
	if(a>b)return 1 //升序
	if(a<b)return -1 //降序
	return 0  //不进行排序(浏览器不同,结果可能不同)
}
function jiang(a,b){
	if(b>a)return 1 //降序
	if(b<a)return -1 //升序
	return 0  //不进行排序(浏览器不同,结果可能不同)
}
var arr=['tom','cat','jimi'] 
console.log(arr.sort(sheng))// ["cat", "jimi", "tom"]
console.log(arr.sort(jiang))// ["tom", "jimi", "cat"]

sort还可以对对象数组按照对象属性来排序

var items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic',value: 13 },
  { name: 'Zeros', value: 37 }
];
items.sort(function(a,b){
    return (a.value-b.value) //进行升序排列
})
console.log(items)

运行结果:
运行结果
参考:MDN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值