Array.prototype.sort()对数组对象排序的方法

Array.prototype.sort()方法接受一个参数——Function,Function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行比较,如果是Number类型则比较值的大小。如果比较的函数中返回1则两个元素交换位置,0和-1不交换位置。

var arr = [3, 5, 2, 1];
// 从小到大排序
arr.sort(function(a, b){
    return a > b ? 1 : -1;
});
// 得到的结果:[1, 2, 3, 5]

如果是对一个数组对象进行排序,原理如下。

var arr = [
    { a : 2, b : 3.2},
    { a : 3, b : 1.2},
    { a : 4, b : 2.2},
    { a : 6, b : 1.2},
    { a : 5, b : 3.2}
]
/// 从小到大按属性b排序
arr.sort(function(x, y){
    return x.b > y.b ? 1:-1;
});

x和y就是arr的一个元素,即一个对象,所以直接比较两个对象的属性即可。

上面的例子中,最小的元素中有重复,如果需求是:先按b属性从小到大排序,如果最小中有重复则再按a属性排序,那应该怎么写呢?
在排序的时候,先按b属性排序,如果x.b的大于y.b则将x移到y的右边,如果x.b等于y.b则再通过x.a和y.a进行比较,所以代码如下。

arr.sort(function(x, y){
    if(x.b > y.b){
        return 1;
    }else if(x.b === y.b){
        return x.a > y.a ? 1 : -1;
    }else if(x.b < y.b){
        return -1;
    }
});
时间: 2024-08-02 13:43:17

Array.prototype.sort()对数组对象排序的方法的相关文章

js中的数组对象排序(方法sort()详细介绍)

定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所

javascript数组对象排序

javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: ArrayObject.sort(order); 测试A: var mm=[1,4,0,6,3,1,2]; mm.sort(); alert(mm);//0 1 1 2 3 4 6 返回值为对数组的引

使用vue实现数组对象排序

从网上找到的例子用vue来实现数组对象排序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-U

js中的数组对象排序

一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"

List对象排序通用方法

在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询.如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能. 只要把第一次查出来的结果存放在session中,就可以对list重新排序了.一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的.那要怎么排序呢?如果有一个UserInfo对象,包含如下字段: private java.lang.

对数组的操作Array.prototype.sort 方法--alert( [1, 3, 9, 2].sort() )

1.   数组的 sort 方法 远远没有被充分利用,而且可能比开发者们想像的更加强大.很多开发者可能觉得 sort 方法可以用来做这种事情: [1, 3, 9, 2].sort(); // 返回 [1, 2, 3, 9] alert( [1, 3, 9, 2].sort() ) ……这没错,但它还有更强大的用法,比如这样: [ { name: "Robin Van PurseStrings", age: 30 }, { name: "Theo Walcott",

数组对象排序

函数主体 var byFromMin = function(name){//从小到大排序     return function(o,p){ var a, b; if(typeof o === "object" && typeof p === "object" && o && p) { a = parseInt(o[name]) || o[name]; b = parseInt(p[name]) || p[name];

数组对象排序:Comparable和Comparator

相同: Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都是Java的接口 不同: Comparator位于java.util包下,而Comparable位于java.lang包下 Comparable接口的实现是在类的内部(如 String.Integer已经实现了Comparable接口,自己就可以完成比较大小操作),Comparator接口的实现是

Array.prototype.sort()

sort() 方法对数组的元素做原地的排序,并返回这个数组.默认按照字符串的Unicode码位点(code point)排序. 语法 arr.sort([compareFunction]) 参数 compareFunction 可选.用来指定按某种顺序进行排列的函数.如果省略,元素按照转换为的字符串的诸个字符的Unicode位点进行排序. 详解 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字