2017-02-27 123 views
0

我有下面的對象數組,我想對它進行排序。使用lodash按鍵名稱'val'對對象數組排序

 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' 
} 

]

我曾嘗試以下排序功能 -

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

不過這回我是錯的輸出。 我也嘗試使用orderby和sortby,但仍然得到錯誤的輸出。

_.orderBy(點,[ 'VAL'],[ '遞增'])

_.sortBy(點, 'VAL')

通過同時使用選項我得到錯誤的排序值。

+0

爲'numbers'和'strings'排序是不相等的。你在'val'字段中有'strings'。 – MysterX

+0

我只是想做同樣的事情@Rory McCrossan –

回答

0

使用這種方法 -

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

我寫錯了(a-b)。仍然得到錯誤的值 – Kalashir

+0

使用Number()而不是parseInt(),因爲parseInt()將失去精度 –