我有一个看起来像这样的数组:
0123456789123456:14
0123456789123456:138
0123456789123456:0
基本上,我需要按从大到小的顺序对它们进行排序,但要按冒号后面的数字进行排序。我知道排序功能有点奇怪,但是我不确定如何在不将冒号之前的id从后面的值断开的情况下做到这一点。
答案 0 :(得分:2)
将字符串拆分为第二个值并按增量排序。
const second = s => s.split(':')[1];
var array = ['0123456789123456:14', '0123456789123456:138', '0123456789123456:0'];
array.sort((a, b) => second(b) - second(a));
console.log(array);
答案 1 :(得分:2)
假设数组中各项的结构是已知的(如所述),则可以像这样对它进行排序。
const yourArray = ['0123456789123456:14', '0123456789123456:138', '0123456789123456:0'];
yourArray.sort((a, b) => (b.split(':')[1] - a.split(':')[1]));
console.log(yourArray);
答案 2 :(得分:0)
您可以像这样使用sort()和reverse()(在浏览器控制台中尝试):
var arrStr = [
'0123456789123456:14',
'0123456789123456:138',
'0123456789123456:0'
];
arrStr.sort();
console.log(arrStr);
arrStr.reverse();
console.log(arrStr);
答案 3 :(得分:-1)
您可以使用以下助手在javascript中对字符串数组进行排序:
data.sort((a, b) => a[key].localeCompare(b[key]))