2016-11-24 57 views
1

我有對象的數組,像這樣:lodash SortBy對象內容

var quantityPricing = [ 
    { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 1000, cost: 0.25 }, 
    { quantity: 500, cost: 0.35 } 
]; 

我想sortBy這個數組以升序基於數量的內容,所以我期待的結果應該是:

[ 
    { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 500, cost: 0.35 }, 
    { quantity: 1000, cost: 0.25 } 
] 

因此我試圖用lodash命令:

_.sortBy(quantityPricing, ['quantity']); 

但不幸的是resul這是由函數返回不像是會在數量第一個數字只排序,例如:

{ 
    "quantity": 1, 
    "cost": 0.5 
}, 
{ 
    "quantity": 100, 
    "cost": 0.45 
}, 
{ 
    "quantity": 1000, 
    "cost": 0.25 
}, 
{ 
    "quantity": 500, 
    "cost": 0.35 
} 

我不明白爲什麼500來結尾,除非它是由第一個數字排序只?因爲我的數組排序後500應該在100之後。

任何幫助將不勝感激。

+0

如果什麼數量將相同的,所以你希望自己的成本,按升序排列? – Mahi

回答

2

Lodash sortBy不會修改原始數組,它應該返回一個新的數組。你打印原始數組嗎?

測試與此代碼和它的工作原理:

var arr = _.sortBy(quantityPricing, 'quantity'); 
console.log(arr); 

結果:

[ { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 500, cost: 0.35 }, 
    { quantity: 1000, cost: 0.25 } ] 
1

您的代碼實際上做的工作(如@drinchev指出)。

  1. 轉到https://lodash.com/docs/(其加載爲全局變量lodash)
  2. 打開瀏覽器的JavaScript控制檯。
  3. 粘貼此代碼並回車:

    _.sortBy([ 
        { quantity: 1, cost: 0.5 }, 
        { quantity: 100, cost: 0.45 }, 
        { quantity: 1000, cost: 0.25 }, 
        { quantity: 500, cost: 0.35 } 
    ], ['quantity']); 
    

它看起來是這樣的:

sortBy() example