javascript - 用数字对数组进行排序

标签 javascript node.js sorting discord.js

这是我的数组:

var myArray = [
  '<@424507945156784498> - 152,800$',
  '<@381223410610501732> - 100$',
  '<@224451506344606852> - 74,424$',
  '<@101441124537903160> - 65,100$'
];

这就是我想要的:

var newArray = [
  '<@424507945156784498> - 152,800$',
  '<@224451506344606852> - 74,424$',
  '<@101441124537903160> - 65,100$'
  '<@381223410610501732> - 100$',      
];

我尝试使用此方法 - Javascript : natural sort of alphanumerical strings 但它按 id 排序 (<@424507945156784498>) 我如何按货币值(value)排序?

最佳答案

拆分和替换 - 排序将对现有数组进行排序 - 如果您不需要改变它,则需要将其复制到另一个数组:

var myArray = [
  '<@424507945156784498> - 152,800$',
  '<@381223410610501732> - 100$',
  '<@224451506344606852> - 74,424$',
  '<@101441124537903160> - 65,100$'
];
function toNum(str) {
  return +str.split(" - ")[1]  // get the amount
    .replace(/[^\d]/g,"");     // remove all non-numeric
}
myArray.sort(function(a,b) {
  return toNum(b)-toNum(a);    // numeric sort in situ
});
console.log(myArray)

关于javascript - 用数字对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102231/

相关文章:

javascript - 即使页面关闭也能运行 javascript 的 HTML

javascript - 如果函数和参数均为 “wrapped”,如何使用 lift

node.js - 由于 EAI_AGAIN,电子邮件未在 Docker 容器内使用 Nodemailer 发送

javascript - 按最接近 x 的值对对象数组进行排序

python - 根据具有特殊要求的另一个数组对数组进行排序

javascript - 使用 moment.js 将日期转换为字符串 "MM/dd/yyyy"

javascript - 如何添加指向谷歌饼图切片的链接

ajax - 向本地主机nodejs服务器发送简单的ajax请求

javascript - SEQUELIZE 插入行时不会自动递增 id?

Python - 列表的追加和排序