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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
js 居中漂浮广告
Mar 21 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
Mar 31 Javascript
web网页按比例显示图片实现原理及js代码
Aug 09 Javascript
jqgrid 编辑添加功能详细解析
Nov 08 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
jQuery实现图片预加载效果
Nov 27 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
vue项目如何刷新当前页面的方法
May 18 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
vue backtop组件的实现完整代码
Apr 07 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生成网页快照 不用COM不用扩展.
2010/02/11 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
JS 继承实例分析
2008/11/04 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
python实现顺时针打印矩阵
2019/03/02 Python
Python如何实现强制数据类型转换
2019/11/22 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
升职自荐信范文
2013/10/05 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
辛亥革命观后感
2015/06/02 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
Window server中安装Redis的超详细教程
2021/11/17 Redis
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技