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事件写法实现代码
Jan 07 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
Dec 16 Javascript
JavaScript实现输入框(密码框)出现提示语
Jan 12 Javascript
jquery实现自适应banner焦点图
Feb 16 Javascript
javaScript实现复选框全选反选事件详解
Nov 20 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 Javascript
Vue快速实现通用表单验证功能
Dec 05 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 Javascript
vue实现拖拽交换位置
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指定函数参数默认值示例代码
2013/12/04 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php cli换行示例
2014/04/22 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
js树形控件脚本代码
2008/07/24 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python之eval()函数危险性浅析
2014/07/03 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python random模块用法解析及简单示例
2017/12/18 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
库房主管岗位职责
2013/12/31 职场文书
班组长岗位职责范本
2014/01/05 职场文书
社区工作者感言
2014/03/02 职场文书
保健品市场营销方案
2014/03/31 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
学校欢迎标语
2014/06/18 职场文书