【JavaScript】数组sort()排序规则
2014-02-23 21:06
731 查看
在Javascript的数组Array中,sort()函数主要使用来对数组的元素进行排序。
它的语法是:
其中sortby是排序的比较函数,默认是空,代表按字母顺序对数组中的元素进行排序,要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。但是我们也可以规定指定的比较函数,来对数组的排序进行控制。
首先定义Person类:
定义比较函数:
测试:
最后输出的结果是:
p1,180,55,22
p3,180,58,22
p2,180,60,22
结果完全正确
以上是对数组中排序函数sort()中比较函数的一些想法,在遇到其他更加复杂的排序需求的时候,只需要根据具体的情况编写排序的规则就可以了,灵活应用。
它的语法是:
arrayObject.sort(sortby)
其中sortby是排序的比较函数,默认是空,代表按字母顺序对数组中的元素进行排序,要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。但是我们也可以规定指定的比较函数,来对数组的排序进行控制。
一、默认情况
按照字母顺序进行排序,举例如下:<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") document.write(arr.sort()) </script>
二、按照数字大小排序
<script type="text/javascript"> function sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = "10" arr[1] = "5" arr[2] = "40" arr[3] = "25" arr[4] = "1000" arr[5] = "1" document.write(arr + "<br />") document.write(arr.sort(sortNumber)) </script>
三、按照对象属性进行排序
假设现在有一个Person类,具有身高、体重、年龄三个属性,我们按照年龄进行排序,年龄相等再比较身高,身高相等再比较体重。首先定义Person类:
function Person(n, s, w, a){ this.name = n; //用于区分对象 this.stature = s; //身高 this.weight = w; //体重 this.age = a; //年龄 }
定义比较函数:
function compareFunc(x, y){ if (x.age > y.age) { return 1; } else if (x.age == y.age) { //年龄相等,比较身高 if (x.stature > y.stature) { return 1; } else if (x.stature == y.stature) { //身高相等,比较体重 if (x.weight > y.weight) { return 1; } else if (x.weight == y.weight) { return 0; } else { return -1; } } else { return -1; } } else { return -1; } }
测试:
//这个排序函数看着很复杂,其实就是3个if的嵌套 //创建3个Person类的实例,为了证明最后比较了体重,我故意将 //身高和年龄的值设为一样 var p1 = new Person("p1", 180, 55, 22); var p2 = new Person("p2", 180, 60, 22); var p3 = new Person("p3", 180, 58, 22); //定义数组 var persons = [p1, p2, p3]; //这里的sort()方法带了一个参数a,这个a就是你自定义的排序函数名,不带括号 persons.sort(compareFunc); //将排序后的结果循环输出 for (var i = 0; i < persons.length; i++) { document.write(persons[i].name + "," + persons[i].stature + "," + persons[i].weight + "," + persons[i].age + "<br />"); }
最后输出的结果是:
p1,180,55,22
p3,180,58,22
p2,180,60,22
结果完全正确
以上是对数组中排序函数sort()中比较函数的一些想法,在遇到其他更加复杂的排序需求的时候,只需要根据具体的情况编写排序的规则就可以了,灵活应用。
相关文章推荐
- javaScript学习笔记, 数组排序sort();
- Javascript数组的排序 sort()方法和reverse()方法
- javascript中用数组sort排序问题
- JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- 浅谈JavaScript对象数组根据某属性sort升降序排序
- Javascript数组的排序 sort()方法和reverse()方法
- Javascript数组的排序:sort()方法和reverse()方法
- javascript中li标签的排序和数组sort的用法
- javascript 数组排序函数sort和reverse使用介绍
- JavaScript数组排序reverse()和sort()方法详解
- JavaScript中数组的sort排序函数和splice函数
- javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo
- JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- JavaScript sort() 方法数组排序文字【每日一段代码92】
- Javascript数组的排序 sort()方法和reverse()方法
- JavaScript 使用 sort() 方法从数值上对数组进行排序
- javascript数组(1) ——sort的工作原理及其他数组排序方法
- JavaScript中数组Array.sort()排序方法详解
- javascript 的数组的sort() 排序。
- Javascript数组的排序 sort()方法和reverse()方法