理解js中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函数了!

猜你喜欢

转载自blog.csdn.net/qq_42232573/article/details/109921468