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 相关文章推荐
在线编辑器的实现原理(兼容IE和FireFox)
Mar 09 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
Flow之一个新的Javascript静态类型检查器
Dec 21 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
如何使node也支持从url加载一个module详解
Jun 05 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
Jun 11 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 类自动载入的方法
2015/06/03 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
Vue通过input筛选数据
2020/10/26 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
基于python requests库中的代理实例讲解
2018/05/07 Python
django中间键重定向实例方法
2019/11/10 Python
Python接收手机短信的代码整理
2020/08/02 Python
毕业生找工作的自我评价
2013/10/18 职场文书
护理专业学生的求职信范文
2013/12/11 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
北京申奥口号
2014/06/19 职场文书
应届生自荐信
2014/06/30 职场文书
八项规定对照检查材料
2014/08/31 职场文书
毕业证代领委托书
2014/09/26 职场文书
介绍信如何写
2015/01/31 职场文书
银行实习推荐信
2015/03/27 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技