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 面向对象编程(1) 基础
May 18 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
Dec 12 Javascript
JS localStorage实现本地缓存的方法
Jun 22 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
May 28 Javascript
jQuery插件实现文件上传功能(支持拖拽)
Aug 27 Javascript
JavaScript实现计算多边形质心的方法示例
Jan 31 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
Vue3 中的数据侦测的实现
Oct 09 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 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
PHP中,文件上传
2006/12/06 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
JS模板实现方法
2013/04/03 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
python正则实现提取电话功能
2018/02/24 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
django的autoreload机制实现
2020/06/03 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
车间副主任岗位职责
2013/12/24 职场文书
电工工作职责范本
2014/02/22 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
路政管理求职信
2014/06/18 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2016寒假假期总结
2015/10/10 职场文书
导游词之任弼时故居
2020/01/07 职场文书
python实现简单倒计时功能
2021/04/21 Python
如何使JavaScript休眠或等待
2021/04/27 Javascript
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis