jQuery表排序和货币问题

问题描述 投票:2回答:2

这可能有点专业,但是无论如何这里是:

参考页:http://greg-j.com/icvm/anticartel/search-results.html

供参考的插件:http://tablesorter.com/

[如果您查看“罚款总额”的最后两列,您会看到货币输出包括$ x.xxx十亿和$ x.xxx百万。内置货币解析器不考虑此格式。幸运的是,该插件可让您编写your own parser。但是,我什么都没走。

javascript jquery tablesorter
2个回答
3
投票

看看这是否可行,我还没有测试:

$.tablesorter.addParser({ 
    id: 'monetary', 

    'is': function(s) { 
        return false; 
    }, 

    format: function(s) { 

        var i = s.split('$').join('');

        var suffixes = [
          {name:'thousand', mult: 1000},
          {name:'million', mult: 1000000},
          {name:'billion', mult: 1000000000},
          {name:'trillion', mult: 1000000000000}
        ]; 

        for (var j in suffixes) { 
          if (i.indexOf(' '+suffixes[j].name) != -1) {

              i = i.split(' '+suffixes[j].name).join('');

              val = parseFloat(i) * suffixes[j].mult;
          } 
        }

        return val; 
    },  

    type: 'numeric' 
}); 


$("#cartels").tablesorter({
    widgets: ['zebra'],
    sortList: [[0,0]], 
    headers: { 
        4: { 
            sorter:'monetary' 
        },
        5: { 
            sorter:'monetary' 
        }
    } 
});

1
投票

您可以发布您尝试过的代码吗?

[在您发布的示例中,他们似乎正在为每个单词分配一个数字表示形式,然后按此排序:

return s.toLowerCase().replace(/good/,2).replace(/medium/,1).replace(/bad/,0);

因此,在您的情况下,一种方法可能是将零替换为正确的零,十亿替换为零。因此,就解析器而言,基本上一百万美元的评估价值为一百万美元。

return s.toLowerCase().replace(/million/,000000).replace(/billion/,000000000);

因此,一旦评估了替换功能,s就将评估为$1000000。只是一个想法。不知道它是否有效,但是它可能会让您走上正确的轨道。

© www.soinside.com 2019 - 2024. All rights reserved.