2011-11-11 5 views
2

をソートし、通貨問題:参照用jQueryのテーブルこの1つは少し専門的なことが、ここでは、とにかく行くこと

ページ:参照用http://greg-j.com/icvm/anticartel/search-results.html

プラグイン:http://tablesorter.com/

あなたが最後に見た場合"Total Fines"の2つの列には、通貨出力には$ x.xxx十億円と$ x.xxx millionsが含まれています。ビルトイン通貨パーサーはこの形式を考慮しません。プラグインは、幸いにも、your own parserと書くことができます。しかし、私はどこにも行きませんし、私は他の誰かから少し助けを得ることができると思っています。

何か助けていただければ幸いです。

答えて

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' 
     } 
    } 
}); 
+0

私はあなたが非常に近いだと思います。ヘッダー配列は0ベースなので、ヘッダー4と5は5と6ではなくなります。 ただし、ヘッダー4は奇妙に並べ替えられています。私はサンプルページを更新しました。 – S16

+0

注:表示されている数値の値としてvalが返されるのではなく、1000000,1000000000または1000000000000として返されます。 – S16

+0

問題が見つかりました。コード。ピアレビューと承認をお願いします。 ありがとうございました! – S16

1

あなたが試したコードを投稿できますか?

それは数表現で各単語を割り当て、そのことにより、ソートされたあなたが投稿彼らは一例で何をしているかのようになります。

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

だからあなたの場合には一つの方法は、交換するかもしれません百万円は正しい数のゼロで、同じは億円です。パーサーが関わっている限り、本質的に100万ドルは100万ドルと評価されます。

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

置き換える機能が評価されればそうs$1000000に評価しています。 ちょっと考えました。それがうまくいくかどうかはわかりませんが、正しい軌道に乗るかもしれません。