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 submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
jQuery事件详解
Feb 23 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
vue页面跳转后返回原页面初始位置方法
Feb 11 Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 Javascript
Node.js 的 GC 机制详解
Jun 03 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 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 中检查或过滤IP地址的实现代码
2011/11/27 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
玩转方法:call和apply
2014/05/08 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
python中readline判断文件读取结束的方法
2014/11/08 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
python中列表的含义及用法
2020/05/26 Python
Django返回HTML文件的实现方法
2020/09/17 Python
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
一名毕业生的自我鉴定
2013/12/04 职场文书
初婚初育证明范本
2014/11/24 职场文书
党员转正意见怎么写
2015/06/03 职场文书
跑吧孩子观后感
2015/06/10 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
七年级话题作文之执着
2019/11/19 职场文书