JavaScript的sort用法
来源:互联网 发布:手碟软件 编辑:程序博客网 时间:2024/05/16 08:43
参考:廖雪峰老师的javascript教程
排序算法
JavaScript的Array的sort()方法就是用于排序的,但是排序结果可能让你大吃一惊:
// 看上去正常的结果:['Google', 'Apple', 'Microsoft'].sort(); // ['Apple', 'Google', 'Microsoft'];// apple排在了最后:['Google', 'apple', 'Microsoft'].sort(); // ['Google', 'Microsoft", 'apple']// 无法理解的结果:[10, 20, 1, 2].sort(); // [1, 10, 2, 20]
第二个排序把apple排在了最后,是因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后。
第三个排序结果是因为Array的sort()方法默认把所有元素先转换为String再排序,结果’10’排在了’2’的前面,因为字符’1’比字符’2’的ASCII码小。
sort()方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序
要按数字大小排序,我们可以这么写:
var arr = [10, 20, 1, 2];arr.sort(function (x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0;}); // [1, 2, 10, 20]
如果要倒序排序,我们可以把大的数放前面:
var arr = [10, 20, 1, 2];arr.sort(function (x, y) { if (x < y) { return 1; } if (x > y) { return -1; } return 0;}); // [20, 10, 2, 1]
忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能定义出忽略大小写的比较算法就可以:
var arr = ['Google', 'apple', 'Microsoft'];arr.sort(function (s1, s2) { x1 = s1.toUpperCase(); x2 = s2.toUpperCase(); if (x1 < x2) { return -1; } if (x1 > x2) { return 1; } return 0;}); // ['apple', 'Google', 'Microsoft']
最后友情提示,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是同一对象
1 0
- JavaScript的sort用法
- javascript 数组排序sort()用法
- 【笔记】 sort的用法
- SORT的详细用法
- sort 的用法详解
- sort 命令的用法
- Arrays.sort()的用法
- sort函数的用法
- *sort的一些用法*
- sort的高深用法
- sort的用法
- sort的用法
- sort函数的用法
- STL的sort用法
- Sort函数的用法
- sort函数的用法
- sort的用法
- linux sort的用法
- VMware Workstation安装CentOS6.5x64
- PostgreSQL和Kingbase中设置search_path
- git常用命令——切换到远程成员分支
- 火狐浏览器打开网页一直出现连接不安全问题
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- JavaScript的sort用法
- Android 虚拟按键与沉浸式的适配
- 数组基础
- 纯手工管理package的一次尝试
- linux 下编译php扩展memcached
- RecyclerView使用踩坑全过程
- 87国网速比较:加拿大快过美国 韩国居首
- Chrome 中的 JavaScript 断点设置和调试技巧
- centos下查看iptables 防火墙状态