Heim  >  Artikel  >  Web-Frontend  >  js使用Array.prototype.sort()对数组对象排序的方法_javascript技巧

js使用Array.prototype.sort()对数组对象排序的方法_javascript技巧

WBOY
WBOYOriginal
2016-05-16 16:17:321301Durchsuche

本文实例讲述了js使用Array.prototype.sort()对数组对象排序的方法。分享给大家供大家参考。具体分析如下:

在讲对数组对象进行排序时,我们先来简单的了解一下Array.prototype.sort()。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         return -1;
    }
})

希望本文所述对大家的javascript程序设计有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn