js实现多列排序-存在问题
js实现多列排序
根据业务逻辑调整 sortData 的数据。
排序的规则是按照第一列排序,第一列相同按照第二列排序,依次类推
// 要排序的数据
const array = [{ name: '甲'asd, age: 10, money: 100 }, { name: '亿', age: 10, money: 90 }, { name: '丙', age: 9, money: 100 }]
// 排序的顺序,和升序降序 descending,ascending
const sortData = [{ orderColumn: 'age', orderState: 'ascending' }, { orderColumn: 'money', orderState: 'descending' }]
array.sort((a, b) => {
const sortFun = (index) => {
const currentSort = sortData[index]
// 如果当前相同,则递归向下排序
if (a[currentSort.orderColumn] === b[currentSort.orderColumn]) {
// 如果没有下级了,直接按照当前层级进行排序
if (sortData.length - 1 >= index + 1) {
return sortFun(index + 1)
}
}
// 根据排序规则进行排序
if (currentSort.orderState === 'ascending') {
return Number(a[currentSort.orderColumn]) - Number(b[currentSort.orderColumn])
} else {
return Number(b[currentSort.orderColumn]) - Number(a[currentSort.orderColumn])
}
}
// 排序递归方法
return sortFun(0)
})
console.log(array)
js实现多列排序-存在问题的更多相关文章
- 【变态需求】bootstrapTable列排序-选择正序倒序不排序
产品经理:那个table排序能不能点击后弹个选项选择正序倒序不排序? -- 那个是bootstrapTable的插件!不支持!改不了!! 注意:数据上假的,效果看http请求参数进行脑补 这是boot ...
- 使用 JQuery 实现将 table 按照列排序
使用 JQuery 实现将 table 按照列排序 使用 JQuery 实现将 table 按照列排序 代码如下 <!DOCTYPE html> <html> <head ...
- bootstrap列排序
<!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 列排序</title> <li ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 网格系统实例:列排序
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS实现前台表格排序功能
JS实现前台表格排序功能 虽然数据量不大的情况下,前台排序速度比较快,但一般情况下,我们的项目只使用后台排序,原因有二: 一是代码简单:二是前台JS排序对于有分页的情况无法处理. 前段时间,有个功能需 ...
- Jtable 表格按多列排序(支持中文汉字排序)
这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...
- easyUI datagraid的列排序
在给datagraid做多列排序时请注意: 首先,做的是后台排序,那么需要设置: remoteSort:'true', 然后,不要添加 multiSort:'true',这个是多列一起排序无法实现.. ...
- EF架构~真正被封装的排序方法,支持多列排序
回到目录 对于linq to sql 和linq to entity来说,当你把获取数据的方法封装了之后,总觉得还缺点什么,想了之后,应该是排序,但看了微软的orchard项目之后,觉得它的排序封装的 ...
- 自定义多列排序:C++/Java实现
前言: 有些时候,我们在编程中会遇到多列排序的需求.假如在execle,这事儿就太easy了.不过没办法,现在就需要你用Java或者C++实现这样一个功能! 比如将下表无序的数据通过重排之后按照以下规 ...
- GridView多列排序
public class WebGridView:GridView { 属性#region 属性 /**//// <summary> /// 是否启用或者禁止多列排序 /// </s ...
随机推荐
- FFmpeg开发笔记(七):ffmpeg解码音频保存为PCM并使用软件播放
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Ubuntu 安装 Python3.6.7
注意: 不要卸载ubuntu自带的python版本: ubuntu下不同版本的python可以共存,可直接安装python3.6. 1.升级包索引和软件 sudo apt update sudo ap ...
- jdk17新特性梳理
jdk17新特性梳理 目录 jdk17新特性梳理 jdk8升级至jdk17新特性梳理 升级jdk17的理由 新特性梳理 可以在接口中定义私有方法,主要为了jdk8的default方法 局部变量可以使用 ...
- Redis动态配制,限内存,免重启
p.p1 { margin: 0; font: 14px Menlo; color: rgba(0, 255, 255, 1); background-color: rgba(0, 0, 0, 0.8 ...
- Calculate Similarity调研
Calculate Similarity - the most relevant Metrics in a Nutshell --调研学习相似度定义与计算 Zhang Zhibin 张芷彬 Many ...
- 聊聊 HTTP 性能优化
哈喽大家好,我是咸鱼. 作为用户的我们在 "上网冲浪" 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢.响应延迟的情况. 而 HTT ...
- Go语言的100个错误使用场景(55-60)|并发基础
目录 前言 8. 并发基础 8.1 混淆并发与并行的概念(#55) 8.2 认为并发总是更快(#56) 8.3 分不清何时使用互斥锁或 channel(#57) 8.4 不理解竞态问题(#58) 8. ...
- 为什么HashMap的键值可以为null,而ConcurrentHashMap不行?
写在开头 昨天在写<HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!>这篇文章的时候,漏了一个知识点,知道晚上吃饭的时候才凸显想到,关于Concur ...
- 10、mysql的锁
锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢). 在数据库中,除传统的计算资源(如 CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访 ...
- 14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀最大值优化)
思路: dp还是挺明显的,思路可以参考最长上升子序列 有点dp的感觉 \(f[i]\)表示考虑前\(i\)个数,的最大值 当前数有两种删或不删 不删:\(f[i]=f[i-1]\); 删:\(f[i] ...