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 相关文章推荐
jquery 日期分离成年月日的代码
May 14 Javascript
jquery的live使用注意事项
Feb 18 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
sails框架的学习指南
Dec 22 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
Dec 20 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
element-ui 限制日期选择的方法(datepicker)
May 16 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP insert语法详解
2008/06/07 PHP
php二维数组排序详解
2013/11/06 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
JS trim去空格的最佳实践
2011/10/30 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
javascript实现二叉树遍历的代码
2017/06/08 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
基于python的Paxos算法实现
2019/07/03 Python
python类中super() 的使用解析
2019/12/19 Python
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
上班离岗检讨书
2014/01/27 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
三万活动总结
2014/04/28 职场文书
职工小家建设活动方案
2014/08/25 职场文书
金融保险专业求职信
2014/09/03 职场文书
简易版租房协议书范本
2014/10/13 职场文书
人事文员岗位职责
2015/02/04 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
MySQL 数据类型选择原则
2021/05/27 MySQL
Python实现单例模式的5种方法
2021/06/15 Python
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB