对Number类型的数组排序是很简单的,对数组元素为对象的数组进行排序也很简单,可以写一个下面的公共方法

/** 两个参数: 参数1 是排序用的字段, 参数2 是:是否升序排序 true 为升序,false为降序*/
function compare (attr,rev) {// console.log(attr, rev)if(rev ==  undefined){rev = 1;}else{rev = (rev) ? 1 : -1;}return (a,b) => {a = a[attr];b = b[attr];if(a < b){return rev * -1;}if(a > b){return rev * 1;}return 0;}},

在代码中使用如下:

let list = [{id: 1, name: '章三'},{id: 10, name: 'wangwu'},{id: 2, name: 'list'}
]
// 用id 字段做升序排序
let d = list.sort(compare('id', true))
console.log(d) // [{id: 1, name: '章三'}, {id: 2, name: 'list'}, {id: 10, name: 'wangwu'}]

这样就可以对任意一个数组对象的任意一个字段进行排序啦

为什么没有使用更简单的写法。

data.sort((a,b)=>{ return a.date-b.date}

因为在项目中得到了这样一组数据,按照要求应该用这个数据的date属性排序。但是简单写法中,排序后,诡异的不成立。

let data = [{"date":"2022-07-09","prob":"78.32"},{"date":"2022-07-08","prob":"86.70",},{"date":"2022-07-07","prob":"78.56"},{"date":"2022-07-06","prob":"90.04"},{"date":"2022-07-05","prob":"91.09"},{"date":"2022-07-04","prob":"99.03"},{"date":"2022-07-03","prob":"99.20"},{"date":"2022-07-02","prob":"98.37"},{"date":"2022-07-01","prob":"98.05"},{"date":"2022-06-30","prob":"99.67"},{"date":"2022-06-29","prob":"90.11"},{"date":"2022-06-28","prob":"96.11"},{"date":"2022-07-10","prob":"",},{"date":"2022-07-11","prob":"",},{"date":"2022-07-12","prob":"",}]

用简单的

console.log(data.sort((a,b)=>{ return a.date-b.date})

可以看到数组并没有按照我想要的从6月28日——7月11日进行排序。

用封装的复杂一些的方法排序:

console.log(data.sort(Tools.compare('date', true)), '复杂的写法')

可以看到打印结果,按照想要的结果进行了排序。

JS 对数组对象进行排序相关推荐

  1. js中数组反向、排序reverse、sort

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组反向.排序 数组反向使用reverse函数,数组排序使用sort函数,排序函数可以传入比较函数,也可以修改数组圆形,自定义添 ...

  2. js检测数组对象中是否有重复值

    判断数组对象里的某个值是否都是同一个值 isRepeat=(arr)=> {var hash = {};for(let i=0;i<arr.length;i++){if (!hash[ar ...

  3. Python学习 Day31 JS类数组对象

    JS类数组对象 一.三元运算符 概述:三元运算符由三部分组成,使用语法如下: A ? B : C 三元运算符A:它需要的是一个布尔值(其他类型数值也可以,但是需要隐式转换为布尔值) 如果A部分为布尔值 ...

  4. js给数组添加数据的方式/js 向数组对象中添加属性和属性值

    参考:https://www.cnblogs.com/ayaa/p/14732349.html js给数组添加数据的方式有以下几种: 直接利用数组下标赋值来增加(数组的下标起始值是0) 例,先存在一个 ...

  5. 动态js创建数组对象

    动态js创建数组对象 var items = []; for (var i = 0; i < 10; i++) { items.push({ id: i, level: i + '级' }) }

  6. js前端数组对象键大写下划线转驼峰

    js前端数组对象键大写下划线转驼峰 我是分为两步去进行转的 第一步,先将对象的键从大写转换为小写 第二步,再将下划线转为驼峰格式 1.大写转小写代码参考如下 upLowercase(inputObj) ...

  7. javaScript中使用sort方法给数组和数组对象进行排序( 比值函数排序)

    //定义一个地址数组 var arr=['orange','apple','banana','litchi']; console.log(arr.sort()); 如果不给sort方法传递参数的话,输 ...

  8. Array数组对象sort排序方法

    数组sort排序方法 Array数组对象中的sort方法是根据数组中数组元素的字符编码进行排序的,所以对数字的排序,会跟想要的升序结果不一样 通过设置sort()方法的参数可以按照自定义的排序方式对数 ...

  9. js实现数组对象去重

    数组对象去重,可直接复用 /***数组对象去重** @param {Array} arr 去重数组* @param {String} key 唯一标识*/ deduplication(arr, key ...

最新文章

  1. 移柯L620模组使用MQTT协议连接移动OneNet云平台(NB-IoT专栏—进阶篇3)
  2. 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
  3. python修改类属性值_python编程入门到实践:直接修改属性的值和通过方法修改属性的值...
  4. mysql密码高级_MySQL数据库高级操作(图文详解)
  5. pat 乙级 1029 旧键盘(C++)
  6. java并发编程实战:第十四章----构建自定义的同步工具
  7. javaweb中报404错误
  8. 职业高中计算机网络试讲稿,2021教师资格证考试面试高中信息技术试讲稿——《建立数据库的基本过程》...
  9. 创建一个简单的ArcGIS Server ASP.NET网页
  10. 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
  11. Docker入门与实践之 Dockerfile 语法详解
  12. System.IO.Directory.Delete 方法的使用
  13. 怎么完全卸载赛门铁克_Symantec卸载方法,赛门铁克卸载
  14. Maven的安装与配置
  15. AdBlock插件自定义拦截规则
  16. linux NM 命令使用介绍
  17. java零基础多久能学会_小白学java大概需要多久 零基础学起来难么
  18. vue实现图片自定义尺寸裁切并上传
  19. WebLogic 10.3.6.0 部署安装问题(简装版)
  20. HNUST OJ 2106 普通电梯

热门文章

  1. AMD CPU 历史表
  2. WPF开发(1)——建立WPF工程
  3. PLSQL--表空间管理
  4. 未能解析主引用“Fiddler”,因为它是针对“.NETFramework,Version=v4.6.1”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.5
  5. 深挖ThreadLocal
  6. 《响应式Web设计性能优化》一2.3 Web运行时性能
  7. 产品破局思考:一个思维,一种策略
  8. 安卓优质大作业 前后端 通讯+社区+志愿服务功能
  9. 银河麒麟安装达梦数据库
  10. Python使用rawpy获取相机图像的原始RAW数据