数组排序

163 阅读2分钟

数组排序之sort方法

JavaScript中有个sort方法可以对数组里面的元素进行排序,但是这个方法默认的是根据ASCI码来进行排序,而且这个排序如果里面的元素比如有两位数字或者三位数字,是全部数组先比较第一位,然后再一次比较下一位,所以很多时候会看到有些两位的数字会比一位的数字排序前。

能不能自定义排序方法呢?

sort数组可以通过传入一个回调函数进行排序,但是这个回调函数必须要有两个形参,和一个返回Boolean值。然后sort函数就从第一个元素开始逐个和其他元素通过这个回调函数来比较,然后里面的两个形参就对应当前循环的那个元素和后面遍历的的元素,如果回调函数返回的是true,那么就是返回第二个参数,如果是false就返回的是第一个参数。 这样就可以根据我们的需求来进行排序了。

升序排序

根据上面说的原理,那我们也可以实现一个升序的排序方法,通过前面的参数减去后面的参数,如果前面的元素大于后面的,就将前面的元素换到后面来。

降序排序

降序的话就是将大的元素放到前面来,那就可以直接用第二个参数的值来对第一个元素减法,如果得出的值是正数,说明这个第二个参数是比第一个参数大,就将第二个参数放到第一个参数位置,反之就是第二个参数放到第一个参数后面。