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


Posted in Javascript onJanuary 28, 2015

本文实例讲述了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 < y.b) {

        return -1;

    }

})

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

Javascript 相关文章推荐
Javascript调试工具(下载)
Jan 09 Javascript
js DOM 元素ID就是全局变量
Sep 20 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
JS hashMap实例详解
May 26 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
jQuery UI结合Ajax创建可定制的Web界面
Jun 22 Javascript
在node中如何使用 ES6
Apr 22 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 Javascript
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
js封装可使用的构造函数继承用法分析
Jan 28 #Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 #Javascript
javascript原型链继承用法实例分析
Jan 28 #Javascript
Jquery 实现图片轮换
Jan 28 #Javascript
javascript查询字符串参数的方法
Jan 28 #Javascript
Jquery 实现弹出层插件
Jan 28 #Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 #Javascript
You might like
php 显示指定路径下的图片
2009/10/29 PHP
smarty表格换行实例
2014/12/15 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
javascript hashtable实现代码
2009/10/13 Javascript
对比分析json及XML
2014/11/28 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python复制文件代码实现
2013/12/23 Python
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
python3中布局背景颜色代码分析
2020/12/01 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
项目开发计划书
2014/01/09 职场文书
责任担保书范文
2014/05/21 职场文书
企业承诺书怎么写
2014/05/24 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
政风行风评议心得体会
2014/10/21 职场文书
论文评审意见
2015/06/05 职场文书
七一慰问简报
2015/07/20 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
python可视化之颜色映射详解
2021/09/15 Python