js中sort()对数组排序的原理是什么?为何无法降序字母

JavaScript016

js中sort()对数组排序的原理是什么?为何无法降序字母,第1张

sort的函数里面 a 和 b 一般都是number型或是可以转换成number的字符串,进行减操作。

然而你的代码中,a b 都为字母,无法进行减法操作,所以不能进行排序。

建议你用 d.sort().reaverse()

sort函数执行时,会依次循环把数组里的两个数传递给函数f,这时候f的参数a和b就分别是传入的两个数,然后分别求出a和b除以2的余数(实际上就是判断a和b是奇数还是偶数,0是偶数,1是奇数)。如果a是偶数,函数f就返回1(或其他任何大于0的数),如果a是奇数且b是偶数就返回-1(或其他任何小于0的数)。sort函数根据f的返回值来对两个数进行排序,如果是大于0的数,就把两个数的值对调,如果是0或小于0的数则不做任何处理。

这样的话,当数组中的所有元素都两两处理完毕后,最终就会形成奇数在前偶数在后的情况了。