之前在网上学js,了解到js的sort方法可以实现排序,简单来说就是这样
arr.sort(funcion (a,b){return a-b})实现升序,return a-b就是实现降序;当时很多资料呈现的是,a这个参数表示前一个值,b表示后一个值,但经过我的测试,并不是这样!
直接给大家上我的测试图
很清楚地可以看到a表示的是后一个数,b表示的是前一个数。看到博客有人说是控制台有问题,然后我便进行了我的下一步验证------既然return a-b能实现升序,且根据网上所言的,a为前一个数,b为后一个数,那么如果前一个数大于后一个数,a-b就大于0,所以return一个大于0的数应该表示把前一个数和后一个数交换位置。然后我便直接这样干了:
结果令人惊讶,如果return 一个正数,是根本不会对数组中的元素进行交换位置的。那么return一个负数就应该表示交换位置,上图吧:
这直接相当于了arr.reverse(),对每一步都进行了交换。
综上所述:js中的sort()方法中的参数为一个函数,如果不传参,默认按照ASCII码进行排序;
如果传参,函数中有两个参数,第一个表示后一个元素,第二个表示前一个元素,return 正数 表示默认它们俩之间的顺序,不进行改动;return 负数表示否定它们之间的顺序,进行交换位置。
希望这篇文章可以帮助到大家!