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 相关文章推荐
js 火狐下取本地路径实现思路
Apr 02 Javascript
Javascript实现滑块滑动改变值的实现代码
Apr 12 Javascript
每天一篇javascript学习小结(Function对象)
Nov 16 Javascript
JavaScript-html标题滚动效果的简单实现
Sep 08 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
vue cli 3.0 使用全过程解析
Jun 14 Javascript
vue代理和跨域问题的解决
Jul 18 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
JS如何把字符串转换成json
Feb 21 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全排列递归算法代码
2012/10/09 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
斜45度寻路实现函数
2009/08/20 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
python实现随机加减法生成器
2020/02/24 Python
python如何变换环境
2020/07/21 Python
python em算法的实现
2020/10/03 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
车间副主任岗位职责
2013/12/24 职场文书
协议书样本
2014/04/23 职场文书
创文明城市标语
2014/06/16 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书