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 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
jquery预加载图片的方法
May 27 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
Oct 26 Javascript
tracking.js页面人脸识别插件使用方法
Apr 16 Javascript
一文了解vue-router之hash模式和history模式
May 31 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 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
Mysql的常用命令
2006/10/09 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php画图实例
2014/11/05 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python实现简单的可逆加密程序实例
2015/03/05 Python
Python实现简单的四则运算计算器
2016/11/02 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python容器类型公共方法总结
2020/08/19 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
厕所文明标语
2014/06/11 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS