【问题标题】:Sorting numbers containing commas对包含逗号的数字进行排序
【发布时间】:2015-05-29 04:02:08
【问题描述】:

我正在尝试使用逗号对一列数字进行排序,例如 1,092,021。排序将 , 视为小数并且排序不正确。例如:

1,330,000
2,350,000
3
5
7,000,000
etc

有没有办法让逗号分隔的数字正确排序?

【问题讨论】:

  • 快速解决方法是删除逗号,然后排序,然后重新添加。

标签: bootstrap-table


【解决方案1】:

这是@JaredT 提出的解决方案:

var nums = ['1,330,000', '2,350,000', '3', '5', '7,000,000', '1,000', '100'];

nums
    .map(function (n) { return parseInt(n.replace(/,/g, ''));})
    .sort(function (a, b) { return a > b;})
    .map(function (i) {
        return String(i).split('')
            .reverse()
            .map(function (n, i) {
                return n + (!i || (i % 3) ? '' : ',');
            })
            .reverse()
            .join('');
    });

【讨论】:

  • 完美,谢谢@Magomogo。我在列中添加了这个排序功能:sorter: function commas(a,b){a = parseInt(a.replace(/,/g, ''));b = parseInt(b.replace(/,/g, ''));if (a < b) return 1;if (a > b) return -1;return 0;},
【解决方案2】:

我和@vinnie-james 做了同样的事情,而且效果很好。我分享我的代码。

'columns': [{
            field:'Checkbox'
          },{
            field:'Status'
          },{
            field:'Price',
            visible:true,
            sorter: function commas(a,b){ a = parseInt(a.replace(/,/g, '')); b = parseInt(b.replace(/,/g, '')); if (a < b) return 1; if (a > b) return -1; return 0; }]

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2011-06-03
    • 2020-02-18
    相关资源
    最近更新 更多