繁体   English   中英

lodash SortBy对象内容

[英]lodash SortBy object content

我有一个像这样的对象数组:

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']);

但是不幸的是,该函数返回的结果似乎只按数量的第一位排序,例如:

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

我不明白为什么末尾会出现500,除非仅按第一位排序? 当数组排序后,由于500应该排在100之后。

任何帮助将不胜感激。

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

您的代码应该可以正常工作。

https://jsbin.com/vepipafaha/edit?html,js,控制台,输出

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

您的代码确实有效(如@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()示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM