lodash SortBy对象内容

我有这样的对象数组:

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

我正在尝试按照数量升序排列这个数组的内容,所以我期待的结果应该是:

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

因此我试图使用lodash命令:

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

但不幸的是,函数返回的结果似乎只能按数量中的第一个数字sorting,例如:

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

我不明白为什么最后会有500个,除非它是按照第一个数字sorting? 一旦我的数组被sorting,500应该在100之后。

任何帮助将不胜感激。

Lodash sortBy不修改原始数组,它应该返回一个新的数组。 你打印原始数组?

testing这个代码,它的工作原理:

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

你的代码应该实际上工作。

https://jsbin.com/vepipafaha/edit?html,js,console,output

您可能在JSON数组中提供了string而不是数量。

你的代码实际上工作(如@drinchev指出)。

  1. 转到https://lodash.com/docs/ (将lodash作为全局variables加载)
  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()的例子