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 处理表单元素的代码
Feb 15 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
jquery使用经验小结
May 20 Javascript
javascript中数组方法汇总
Jul 07 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
Dec 29 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
Apr 25 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
实例教学如何写vue插件
Nov 30 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
JS运动改变单物体透明度的方法分析
Jan 23 Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
javascript对象3个属性特征
Nov 17 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初学者最感迷茫的问题小结
2010/03/27 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
jquery处理json对象
2014/11/03 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python机器学习实战之树回归详解
2017/12/20 Python
详解python 注释、变量、类型
2018/08/10 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
python实现PCA降维的示例详解
2020/02/24 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
如何写出高性能的JSP和Servlet
2013/01/22 面试题
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
特色蛋糕店创业计划书
2014/01/28 职场文书
教师简历自我评价
2014/02/03 职场文书
校庆活动方案
2014/03/31 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
信用卡催款律师函
2015/05/27 职场文书
护士旷工检讨书
2015/08/15 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
python - timeit 时间模块
2021/04/06 Python
pt-archiver 主键自增
2022/04/26 MySQL