博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数组排序,支持正反排序以及多维度排序
阅读量:4316 次
发布时间:2019-06-06

本文共 1645 字,大约阅读时间需要 5 分钟。

工作中遇到js数组排序问题,数组中存储的都是对象,于是就百度了下,利用别人的代码进行修改,最终完成可以倒序、反序,可以进行多维度排序的功能

源码如下:

/** * js数组排序 支持数字和字符串* @param params* @param arrObj   obj     必填  数组对象* @param keyName  string  必填  要排序的属性名称* @param type     int     选填  默认type:0 正顺  type:1反顺*/function arrItemSort(arrObj,keyName,type) {  //这里如果 直接等于arrObj,相当于只是对对象的引用,改变排序会同时影响原有对象的排序,而通过arrObj.slice(0),  //表示把对象复制给另一个对象,两者间互不影响   var tempArrObj = arrObj.slice(0);  var compare = function (keyName,type) {      return function (obj1, obj2) {          var val1 = obj1[keyName];          var val2 = obj2[keyName];          if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {              val1 = Number(val1);              val2 = Number(val2);              }              //如果值为空的,放在最后                     if (val1 == null && val2 == null) {              return 0;          } else if (val1 == null && val2!= null ) {              return (type==1 ? -1 : 1);          } else if (val2 == null && val1!= null ) {              return (type==1 ? 1 : -1);          }                          //排序          if (val1 < val2) {              return (type==1 ? 1 : -1);          } else if (val1 > val2) {              return (type==1 ? -1 : 1);;          } else {              return 0;          }                  }   }  return tempArrObj.sort(compare(keyName,type));}

使用示例:

var temp = [  {"name":"zjf","score":50,"age":10},  {"name":"lyy","score":90,"age":5},  {"name":"zzx","score":90,"age":12}];//根据age排序var temp1 = arrItemSort(temp,"age",1);console.log(temp1);//先按年龄排序,再按分数排序 var temp2 = arrItemSort(arrItemSort(temp,"age",1),"score",1);console.log(temp2);

来源:

转载于:https://www.cnblogs.com/jsfuns/p/8541579.html

你可能感兴趣的文章
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>