javascript - 一次按数字对值排序,第二次按字符串排序

标签 javascript regex datatables

我有这些值(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/

相关文章:

javascript - 如何更新jquery数据表中的选定行

jquery - 当我们调整窗口大小时,如何使用 jquery 为数据表元素分配高度

Datatables.net 日期显示格式

javascript - Imacros 未终止的正则表达式文字

regex - 歧义语法和 PEG.js 的问题(未找到示例)

python - python中的正则表达式,替换word中除#hashtag和@username之外的所有元音

ruby - 从 Ruby 中的字符串中删除非 UTF 字符?

javascript - Jquery 搜索字符串,以逗号分隔

javascript - 如何将图像 (PNG) 转换为 2D 数组(二进制图像)?

JavaScript 从 URL 中删除//