首页 > 其他分享 >js实现多列排序

js实现多列排序

时间:2023-07-14 14:48:25浏览次数:37  
标签:currentSort 排序 return money orderColumn js Number 多列

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)


标签:currentSort,排序,return,money,orderColumn,js,Number,多列
From: https://www.cnblogs.com/niexianda/p/17553652.html

相关文章

  • Clickhouse、Mysql、Presto数据库解析Json数据
    一、Clickhouse解析Json1、visitParamExtractBool(json,name)→提取json中的name字段,返回UInt8,0或1  例:visitParamExtractBool('{"name":true}','name')ASbool2、visitParamExtractInt(json,name)→提取json中的name字段,返回Int型的值  例:visitParamExtractInt......
  • 【859】JS开发相关
     实例我的第一个JavaScript程序FriJul14202314:08:26GMT+1000(AustralianEasternStandardTime)显示日期尝试一下» ......
  • nodejs中jwt的使用
    前言在浏览器和服务端的交互中,http请求是无状态的,那在web项目中准确无误的保存用户的登录状态是前后端交互中必须要解决的问题。目前在web端解决登录认证的问题分为三种base64session/cookietoken下面介绍下token中jwt实现登录验证的方式。基本概念了解下几种不同的认证方式base......
  • java根据实体类排序
    Java根据实体类排序在Java开发中,我们经常需要对实体类进行排序。排序是一种常见的操作,它能够帮助我们对一组对象按照特定的规则进行排列。本文将介绍如何使用Java对实体类进行排序,并提供代码示例来帮助读者更好地理解。实体类排序概述首先,我们需要了解实体类排序的基本概念。排......
  • html2canvas + jspdf 实现前端将页面内容生成 PDF
    一、简易步骤(仅支持下载一页,无法分页)1.下载插件模块npminstallhtml2canvasjspdf--save2.编写代码importhtml2canvasfrom'html2canvas'//引入插件import{jsPDF}from'jspdf'//html2canvsjspdfpdf文件下载exportconstdownloadPdf=(dom,name......
  • bpmn.js修改默认节点颜色
    从node_modules依赖中找到定义图形颜色的js文件bpmn-js/lib/draw/BpmnRenderer.js找到BpmnRenderer.js文件的以下代码: 这里是代码:找到BpmnRenderer.js文件的以下代码:vardefaultFillColor=config&&config.defaultFillColor,  defaultStrokeColor=config&&config......
  • 模块化Common.js与ES6
    为什么要模块化开发1.依赖关系(a文件依赖b文件中的方法,b文件必须在a文件之前引入)2.命名问题(多个文件变量名,方法名相同会出现覆盖)3.代码组织(后期不好维护)模块化规范有1.Common.js规范node,webpack使用的Common.js规范Common.js的导出与引入结论:1.module.expor......
  • antd from 表单中的key 不能绑定input中的字段 Input.js:207 Uncaught (in promise)
    <Formclass="NewVersion"ref="formRef"name="NewVersion":model="formData"><Spacev-for="(newPg,index)informData.version":key="index"style="dis......
  • 冒泡排序
    #冒泡最大的在最后面#冒泡最大的在后面lis=[4,3,2,1]forjinrange(len(lis)-1):#外循环了len-1次flag=False#添加标记没有交换foriinrange(len(lis)-1):#内循环后找到本次最大的放到了最后iflis[i]>lis[i+1]:lis[i]......
  • yarn : 无法加载文件 E:\nodejs\yarn.ps1,因为在此系统上禁止运行脚本。问题解决
    1.在电脑的开始菜单中,搜索PowerShell ,然后以管理员身份运行,如下所示:2.以管理员身份运行后,会出现命令窗口,接下来,输入命令get-ExecutionPolicy 查看权限,会看到它的返回值是 Restricted ,意思是当前是禁用的。3.执行命令:set-ExecutionPolicyRemoteSigned,没有报错就......