JavaScript常用基础算法( 三 )


第二个排序把apple排在了最后,是因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后 。
第三个排序结果,简单的数字排序都能错 。
这是因为Array的sort()方法默认把所有元素先转换为String再排序,结果’10’排在了’2’的前面,因为字符’1’比字符’2’的ASCII码小 。
因此我们把结合这个原理:
var arr = [10, 20, 1, 2]; arr.sort(function (x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0; }); console.log(arr); // [1, 2, 10, 20]上面的代码解读一下:传入x,y,如果x<y,返回-1,x与前面排,如果x>y,返回-1,x后面排,如果x=y,无所谓谁拍谁前面 。
还有一个,sort()方法会直接对Array进行修改,它返回的结果仍是当前Array,一个栗子:
var a1 = ['B', 'A', 'C'];var a2 = a1.sort(); a1; // ['A', 'B', 'C'] a2; // ['A', 'B', 'C'] a1 === a2; // true, a1和a2是同一对象 
【JavaScript常用基础算法】


推荐阅读