跨浏览器的 Array.prototype.sort 的使用姿势

自定义比较函数时,因为 IE 下方法返回的值必须是 0 , -1 , 1 ,分别对应等于、第一个参数排在前面和第一个参数排在后面的情况。而 chrome 等 webkit 浏览器下是 0 (false) 和 -1 一样,都代表第一个参数排前面。array1.sort(); 的默认结果是升序排序。 var a = new Array(4, 11, 2, 10, 3, 1); var b = a.sort(); document.write(b); document.write("<br>"); // 这是 ASCII 字符顺序. // 输出: 1,10,11,2,3,4 // 按照一个比较数组原书的函数来排序 b = a.sort(CompareForSort); document.write(b); document.write("<br>"); // Output: 1,2,3,4,10,11. // 自定义升序排序的比较函数 function CompareForSort(first, second) { if (first == second) return 0; if (first < second) return -1; else return 1; } // 升序排序比较函数的简短版本 function CompareForSort(first, second) { return first < second ? -1: 1; }

参考

sort 方法 (Array) (JavaScript) - Internet Explorer 开发人员中心.aspx)