javascript - localeCompare 排序时未检测到整数

标签 javascript jquery laravel

我使用 JS 和 jQuery 对我的表格进行排序,这是我对表格进行排序的代码

function sortTable(table, column, order) {
        var asc = order === 'asc';
        var tbody = table.find('tbody');

        tbody.find('tr').sort(function (a, b) {
            if (asc) {
                return $('td:eq(' + column + ')', a).text()
                    .localeCompare($('td:eq(' + column + ')', b).text());
            } else {
                return $('td:eq(' + column + ')', b).text()
                    .localeCompare($('td:eq(' + column + ')', a).text());
            }
        }).appendTo(tbody); 
    }

问题是表格仅按第一个数字排序,如下所示:

[ 1, 10, 12, 18, 2, 3, 33, 4, 5]

我希望它是这样的

[ 1, 2 , 3, 4, 5, 10, 12, 18, 33]

最佳答案

有一个选项对象可以提供给 localeCompare 方法。假定其选项之一表明您也可以比较数字('1' < '2' < '10')。 基本用法如下:

a.localeCompare(b, 'en', {numeric: true})

你的代码可以这样修改

function sortTable(table, column, order) {
        var asc = order === 'asc';
        var tbody = table.find('tbody');

        tbody.find('tr').sort(function (a, b) {
            if (asc) {
                return $('td:eq(' + column + ')', a).text()
                    .localeCompare($('td:eq(' + column + ')', b).text(), 'en', {numeric: true});
            } else {
                return $('td:eq(' + column + ')', b).text()
                    .localeCompare($('td:eq(' + column + ')', a).text(), 'en', {numeric: true});
            }
        }).appendTo(tbody); 
    }

检查链接以找出 localeCompare 方法的可能选项:

Intl.Collator() constructor

String.prototype.localeCompare()

关于javascript - localeCompare 排序时未检测到整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51060910/

相关文章:

javascript - 如何防止在 jQuery 动画切换上重复动画?

jquery - animate.css 使用 jquery 失败

javascript - 调整代码以在 Sharepoint 中扩展 Web 部件

php - Laravel 5,有完整的 url 作为路由参数

javascript - angularjs 错误,绑定(bind)不适用于此关键字

javascript - 类型错误 : path must be a string with commander

javascript - 如何在单击时更改 var map = L.mapbox.map (mapbox.js)

javascript - AngularJs ng-options (key,value) ngmodel ="selected"不起作用

mysql - 拉拉维尔 5 : Trouble with putting correct data on screen after combining tables

Laravel 家园 : Unknown database 'projectadmin_db'