我有这些值(value)观:
AH 18, AH 17, AH 16, AH 15, PE 18, PE 17, PE 16, PE 15... etc
我希望能够通过单击相应的按钮按以下顺序对它们进行排序:
AH 18, PE 18, AH 17, PE 17, AH 16, PE 16, AH 15, PE 15
我怎样才能实现这一目标?我知道如何使用下面的代码来操作顺序,这是因为它通过在使用正则表达式之前删除空格和所有内容来使用数字对值进行排序,但是通过这样做,我得到了 PE 18, AH 18, PE 17, AH 17 ...等等
,但不是我想要的正确顺序。
columnDefs.push({"type": "num-fmt", "targets": i});
columnDefs.push({
"targets": i,
"render": function ( data, type, row, meta ) {
return type === 'sort' ? data.replace(/.*\s/g,'') : data;
}
});
提出问题的另一种方式是:
有没有办法一次按数字排序,第二次按字符串排序?第一次它们按数字 PE 18, AH 18, PE 17, AH 17 ... 等
排序,第二次它们按前 2 个字符串排序,所以我会得到最终结果AH 18、PE 18、AH 17、PE 17 ...等
最佳答案
可以将字符串拆分,先取出数字部分进行数值排序,然后再按字符排序。
const split = s => s.split(' ');
var array = ['AH 18', 'AH 17', 'AH 16', 'AH 15', 'PE 18', 'PE 17', 'PE 16', 'PE 15'];
array.sort((a, b) => {
var aa = split(a),
bb = split(b);
return bb[1] - aa[1] || aa[0].localeCompare(bb[0]);
});
console.log(array);
关于javascript - 一次按数字对值排序,第二次按字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51535256/