第二个排序把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常用基础算法】
推荐阅读
- iOS常用调试方法:断点调试
- iOS常用调试方法:静态分析
- iOS常用调试方法:LLDB命令
- 女性新手必看:零基础健身房训练干货帖
- 手机信号栏常用“符号”大揭秘!
- JavaScript 引用类型
- WordPress常用的函数、方法汇总
- 5种最常用的黑客工具,以及如何防御
- python中全部关于字符串常用操作的总结
- JavaScript函数的6个基本术语