2016-11-24 60 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