sort()语法:
数组
arrayObject.sort(fn);dom
参数fn可选,若是为空,则按字母顺序对数组中的元素进行排序,精确地说,是按照字符编码顺序进行排序。So,若是想实现精确排序,应把数组的元素转换成字符串在进行排序。函数
想按照其余标准排序,则需提供比较函数,没错,是函数,为函数提供两个参数,我的理解就是要排序的其中两个元素。为何会有这样的猜想,看规则:编码
function fn (m,n){ if(m<n) return -1;//小于,返回-1 else if(m>n) return 1;//大于,返回1 else return 0;//等于,返回0 }
精简后:spa
function fn (m, n) { return m-n; }
若 m 小于n, 则返回一个小于0的数值,m 会出如今 n 的前面;code
若 m 等于 n, 则返回 0;排序
若 m 大于 n,则返回一个大于0的数值,m 会出如今 n 的后面;字符串
说白了,若是函数fn返回的值为false,则按照升序排序,若是返回true,排序会降序排序;(m 和 n 按照排序后的顺序比较)io
可是若是fn写成这样子呢?字符编码
function fn (m, n) { return m < n; }
若是fn的返回值为false,则按降序排序;若是返回true,排序会升序排序;(m 和 n 按照排序后的顺序比较)
那,若是想随机排序呢?
function fn () { return 0.5 - Math.random(); }
Math.random()返回一个0到1的随机数,0.5 - Math.random() 就会随机返回true和false,这样就实现随机排序了。
再一次感叹JS的灵活,一个sort就能够把排序搞定。