javascript - 如何对一个数组进行排序,该数组的元素为表示金额的字符串,其符号如 62B 和 51M ?我需要对这笔钱进行排序
问题描述
我在网上搜索但无法找到解决方案。请帮忙。
假设我的数组是:
['633.7B', '527M', 2.1B', '25K', '60M', '32B', '85k', '147.2M']
它应该以升序产生输出:
['25K', '85K', '60M', '147.2M', '527M', '2.1B', '32B', '633.7B']
解决方案
尝试以下操作:
const numberFormat = {
'K': 1000,
'M': 1000000,
'B': 1000000000
}
const oldArr = ['633.7B', '527M', '2.1B', '25K', '60M', '32B', '85K', '147.2M']
const newArr =
oldArr
.sort((a, b) =>
a.replace(/[^\d\.]/g, '') * numberFormat[a.slice(-1)] - b.replace(/[^\d\.]/g, '') * numberFormat[b.slice(-1)]
)
console.log('newArr', newArr)
理解步骤:
- 首先,我们在数字及其相关值之间创建了一个简单的关系
''
然后我们用正则表达式对数组进行排序,用(empty)替换不是数字或点的所有内容- 然后我们将这个提取的数字乘以其对应的数字(百万、万亿或十亿)
- 就是这样,只需一个一个相减,你的数组就会正确排序
推荐阅读
- stripe-payments - Stripe Webhook 事件 - 匹配客户 ID?
- android - 使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务
- linux - linux shell脚本变量“未找到”
- python - 如何将所有请求发送到 CGI 脚本而不出现在 .Htaccess 文件的 URL 中?
- google-apps-script - 需要在 google 表格中创建一个应用脚本,该脚本根据另一个单元格值复制货币数据
- wordpress - 什么是在用户配置文件中创建了一个新的自定义字段?
- python - 如何将变量声明为参数并打印所需的子目录?
- javascript - 为什么我收到错误:网络错误 - 使用 axio.get?JSONP
- javascript - 如何在 ReactJS 中强制更新状态
- postgresql - 如何使用 pyodbc 将表从 MS Access 迁移到 Postgres?