文章目录
- 前言
- 一、定义和用法
- 1)基本说明
- 2)不带参数使用
- 二、参数a、b
- 1)a是num[1]; b是num[0]!
- 2)实例
- 实例一:实现从小到大排序
- 实例二:把数组排成最小的数
- 3)sort函数实现原理
- 总结
前言
第一次使用sort方法时,发现数组并不是按照大小顺序排序,查看手册,发现如果想按照其他标准进行排序,就需要提供比较函数,那么这个函数中的参数a、b又是什么呢?
参考了大家的笔记以后,总结了一些自己不懂的地方,如果有错误,希望大家评论指出,一起进步!
一、定义和用法
1)基本说明
- 定义:sort() 方法用于对数组的元素进行排序。
- 语法:arrayObject.sort(sortby)
sortby:可选。规定排序顺序。必须是函数。
- 返回值:数组在原数组上进行排序,不生成副本。
2)不带参数使用
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
var a=[1,4,2,12,453,22]
a.sort();
console.log('数组a:')
console.log(a)
输出:
二、参数a、b
1)a是num[1]; b是num[0]!
提供比较函数,首先要知道a、b到底是谁?
总认为a是num[0],b是num[1],一直都理解不了大家的比较函数,一直搞反了!!!
代码想让大家看两个点:①a是num[1];b是num[0] ②函数返回负值,则交换a、b
var num=[1,4,2,12,453,22];
num.sort((a,b)=>{
console.log('a='+a+'b='+b)
return -1;//返回负值,则交换a与b
})
console.log(num)
输出:
大家可以推一推这个简单的交换过程:直接返回-1,一直交换a与b
2)实例
实例一:实现从小到大排序
代码如下(示例):
var num=[1,1,12,453,22];
num.sort((a,b)=>{
console.log('a='+a+'b='+b)
return a-b;//a=b或a>b,返回0或正值,不做改变;a<b,返回负值,说明后面的数小于前面的数,调换位置
})
console.log(num)
输出:
实例二:把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个
var minNumber = function(nums) {
nums.sort((a,b)=>{
if(''+a+b<''+b+a){return -1;}
else return 1;
});
return nums.join("")
};
输出:
3)sort函数实现原理
还在学习中,学会排序那堆东西回来填坑,加油!!!
总结
理解了a、b参数是谁,返回值正负代表调换与否,就已经可以使用sort函数了!