2017-02-27 9 views
0

以下のオブジェクトの配列があり、ソートしたいと思います。lodashを使用して、キー名 'val'でオブジェクトの配列を並べ替えます。

 function myFunction() { 
      points.sort(function(a, b){return a.val - b.val}); 
      console.log(points) 
     } 

しかし、これは私に間違った出力を返している -

 var points = [ 
{ 
    val: '0.10', 
    text: '$0.10' 
}, 
{ 
    val: '0.50', 
    text: '$0.50' 
}, 
{ 
    val: '1', 
    text: '$1' 
}, 
{ 
    val: '2', 
    text: '$2' 
}, 
{ 
    val: '3', 
    text: '$3' 
}, 
{ 
    val: '10', 
    text: '$10' 
}, 
{ 
    val: '20', 
    text: '$20' 
}, 
{ 
    val: '25', 
    text: '$25' 
}, 
{ 
    val: '50', 
    text: '$50' 
}, 
{ 
    val: '75', 
    text: '$75' 
}, 
{ 
    val: '100', 
    text: '$100' 
}, 
{ 
    val: '150', 
    text: '$150' 
}, 
{ 
    val: '200', 
    text: '$200' 
}, 
{ 
    val: '250', 
    text: '$250' 
}, 
{ 
    val: '300', 
    text: '$300' 
}, 
{ 
    val: '400', 
    text: '$400' 
}, 
{ 
    val: '1000', 
    text: '$1,000' 
}, 
{ 
    val: 'Other', 
    text: 'Other' 
} 

]

私は、ソート機能の下に試してみました。 私はorderbyとsortbyを使ってみましたが、間違った出力を得ました。両方のオプションを使用して

_.orderBy(点、[ 'ヴァル']、[ 'ASC'])

_.sortBy(点、 'ヴァル')

私はソートされた値が間違っています。

+0

は同じではありません。フィールドvalに 'string'があります。 – MysterX

+0

私はちょうど同じことをしたかった@Rory McCrossan –

答えて

0

は、この種の方法を使用します - `numbers`と` strings`のソート

points.sort(function(a,b){ 
return parseInt(a.val) - parseInt(b.val); 
}) 
+0

誤って私は(a - b)を書いた。まだ間違った値が返される – Kalashir

+0

parseInt()は精度を失うため、parseInt()ではなくNumber()を使用します。 –

関連する問題