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使用手册之三 CSS操作
Mar 24 Javascript
js页面跳转的常用方法整理
Oct 18 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
Nov 20 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
vue监听input标签的value值方法
Aug 27 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
Dec 20 Javascript
AJAX在JQuery中的应用详解
Jan 30 jQuery
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
JavaScript内置对象math,global功能与用法实例分析
Jun 10 Javascript
vue中的v-if和v-show的区别详解
Sep 01 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 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
Python 时间处理datetime实例
2008/09/06 Python
python正则表达式抓取成语网站
2013/11/20 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python用户管理系统
2018/03/13 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
社团2014年植树节活动总结
2014/03/11 职场文书
文化建设工作方案
2014/05/12 职场文书
爱护公物标语
2014/06/24 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android