JS sort方法基于数组对象属性值排序


Posted in Javascript onJuly 10, 2020

sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同.

var arr = [
  {name:'zopp',age:0},
  {name:'gpp',age:18},
  {name:'yjj',age:8}
];

function compare(property){
  return function(a,b){
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
  }
}
console.log(arr.sort(compare('age')))

JS sort方法基于数组对象属性值排序

如何根据参数不同,来确定是升序排列,还是降序排序呢?

/**数组根据数组对象中的某个属性值进行排序的方法 
   * 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
   * @param attr 排序的属性 如number属性
   * @param rev true表示升序排列,false降序排序
   * */
  sortBy: function(attr,rev){
    //第二个参数没有传递 默认升序排列
    if(rev == undefined){
      rev = 1;
    }else{
      rev = (rev) ? 1 : -1;
    }
    
    return function(a,b){
      a = a[attr];
      b = b[attr];
      if(a < b){
        return rev * -1;
      }
      if(a > b){
        return rev * 1;
      }
      return 0;
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js window.open弹出新的网页窗口
Jan 16 Javascript
jquery实现简单的二级导航下拉菜单效果
Sep 07 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
Vue+SpringBoot开发V部落博客管理平台
Dec 27 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
JavaScript cookie原理及使用实例
May 08 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 #Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 #Javascript
如何在postman测试用例中实现断言过程解析
Jul 09 #Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 #Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 #Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 #jQuery
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 #Javascript
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
WebPack基础知识详解
2017/01/16 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python解析xml模块封装代码
2014/02/07 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python flask框架post接口调用示例
2019/07/03 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
新教师岗前培训方案
2014/06/05 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
面试复试通知单
2015/04/24 职场文书
食堂卫生管理制度
2015/08/04 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书