如何对包含字母数字字符串的数组进行排序?

时间:2018-01-17 04:28:55

标签: javascript arrays sorting

如果我有以下数组:

var num = [10% cats, 20% dogs, 30% fish, 40% turtles];

其中pct值始终与标签连接。有没有一种简单的方法可以从最大百分比到最小百分比?与其他类似问题不同,此处的格式始终为xx% label

在通常.sort()中使用.sort(function(a,b) {return b-a;}):并不起作用,因为这些不是数字?

输出应该是:

num = [40% turtles, 30% fish, 20% dogs, 10% cats];

2 个答案:

答案 0 :(得分:2)

您可以使用localeCompare进行排序,指定numeric选项。

var num = ['10% cats', '20% dogs', '40% turtles', '30% fish'];
num.sort((a,b) => b.localeCompare(a, undefined, {numeric:true})); 
console.log(num);

答案 1 :(得分:1)

您可以使用sort函数将字符串转换为数值,然后再将它们与百分比进行排序。

var num = ['10% cats', '20% dogs', '30% fish', '40% turtles'];

num.sort( sortByPercentage );

console.log( num );

function sortByPercentage( a,b ) {
  a = parseFloat(a);
  b = parseFloat(b);
  return b-a;
}