JavaScript给我们提供了两个排序方法,一个是sort(),另一个是reverse(),对于第二个方法reverse(),就是对数组倒序排序。用到的地方并不多,对于第一个方法, 是比较常用的一个方法, 如果sort方法没有使用比较函数,则会JavaScript会默认按照字符编码的顺序进行排序,在对数字数组进行排序的时候就会出现一些问题,如果使用了排序方法的话,这些问题都会不复存在。比较函数如下:
对简单数组排序:
//需要排序的数组 var arr = [...........]; //升序排序 var compareASC = function (a, b) { if (a> b) { return -1; } else if (a< b) { return 1; } else { return 0; } }; //降序排序 var compareDESC = function (a, b) { if (a< b) { return -1; } else if (a> b) { return 1; } else { return 0; } } //arr升序 arr = arr.sort(compareASC); //arr降序 arr = arr.sort(compareDESC);
其实升序和降序排序主要是看比较符号的方向 ,现在情况变了一下,如果我们想要操作一个对象数组,按其中的某一个字段属性进行排序的时候,该如何做呢?
其实方法还是一样的,我们只需要把获取到需要排序的字段的值 即可,方法如下:
对对象数组排序:
//需要排序的数组 var arr = [{......},{......},{........}]; //需要排序的字段名 var sortName = '****' //升序排序 var compareASC = function (obj1, obj2) { var val1 = obj1[sortName]; var val2 = obj2[sortName]; if (val1 > val2) { return -1; } else if (val1 < val2) { return 1; } else { return 0; } }; //降序排序 var compareDESC = function (obj1, obj2) { var val1 = obj1[$scope.currentName]; var val2 = obj2[$scope.currentName]; if (val1 < val2) { return -1; } else if (val1 > val2) { return 1; } else { return 0; } } //arr升序 arr = arr.sort(compareASC); //arr降序 arr = arr.sort(compareDESC);