0

私は SlickGrid を実装しており、配列をソートすることによって SlickGrid でサポートされている列ごとに値をソートできるようにしたいのですが、列 (配列) をソートすると、それらは「正しい」順序に配置されません。

返される順序は、1、10、100、11、199、2、20、200、3、30、300... です。

このグリッドのタスクをタイトルでソートしようとすると、問題が非常に明確に表示されます: http://mleibman.github.com/SlickGrid/examples/example-multi-column-sort.html

例で使用されているルールではなく、独自の並べ替えルールを使用しています。

data.sort(function(a, b){
          var result = 
              a[field] === b[field] ? 0 :
              a[field] > b[field] ? 1 : -1
          ; 
          return args.sortAsc ? result : -result;
      });

問題は解決しません。

私の質問は、タイトル(およびその他のデータ)が正しい順序で表示されるように、配列をソートする方法です:1,2,3,100,200,300 ...

4

2 に答える 2

3

あなたの数字は実際には文字列であり、そのように比較されます。これを防ぐには、parseInt(a[field],10) > parseInt(b[field],10)

于 2012-08-18T18:58:09.590 に答える
2

if you are just trying to sort objects of the same type, then there is no problem... your algorithm seems right.

but it seems that your numbers might be actually strings, so they are sorted as strings. you can parse them into numbers .. ie parseInt() , parseFloat() etc.

But if the field is a string followed by a number like the example in the link, then it will not work

"data 20" will always be less than "data 3", so you might want to extract the number then sort by both the string and the number.

于 2012-08-18T19:04:05.300 に答える