Javascript 按对象属性列出的对象的JS顺序数组(美元)

Javascript 按对象属性列出的对象的JS顺序数组(美元),javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我花了很长时间才弄明白这一点。 我的vuejs应用程序中有一组对象,如下所示: var food= [{'name':'apples','price':'222.30'},{'name':'bananas','price':'99.30'},{'name':'oranges','price':'199.30'}]; 当我尝试按价格排序时,我尝试了两者 return food.sort((a, b) => (a.price> b.price) ? 1 : -1); AND retur

我花了很长时间才弄明白这一点。 我的vuejs应用程序中有一组对象,如下所示:

var food= [{'name':'apples','price':'222.30'},{'name':'bananas','price':'99.30'},{'name':'oranges','price':'199.30'}];
当我尝试按价格排序时,我尝试了两者

return food.sort((a, b) => (a.price> b.price) ? 1 : -1);
AND
return _.orderBy(food, 'price')
然而,这似乎解释了价格$99.30高于$222.30——我假设是因为9高于2

任何帮助都将不胜感激!我还想知道是否有一种方法可以从大到小订购,反之亦然。

价格存储为字符串;这就很难了。它将每个价格作为字符串进行比较,每次一个字符,从左到右

考虑转换为浮点数并简化代码:

return food.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));
价格以字符串形式存储;这就很难了。它将每个价格作为字符串进行比较,每次一个字符,从左到右

考虑转换为浮点数并简化代码:

return food.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));

代码的问题在于,值是字符串

一个简单的解决方案:

return food.sort((a, b) => (parseFloat(a.price) > parseFloat(b.price)) ? 1 : -1);

代码的问题在于,值是字符串

一个简单的解决方案:

return food.sort((a, b) => (parseFloat(a.price) > parseFloat(b.price)) ? 1 : -1);

您必须将价格转换为数字,并在排序回调中使用

return food.sort((a, b) => parseFloat(a.price) -  parseFloat(b.price));


您必须将价格转换为数字,并在排序回调中使用

return food.sort((a, b) => parseFloat(a.price) -  parseFloat(b.price));

只需使用数字

var food=[{'name':'Apple','price':'222.30'},{'name':'香蕉','price':'99.30'},{'name':'oranges','price':'199.30'}]; food.sorta,b=>Numbera.price>Numberb.price?1 : -1; 食物 只需使用数字

var food=[{'name':'Apple','price':'222.30'},{'name':'香蕉','price':'99.30'},{'name':'oranges','price':'199.30'}]; food.sorta,b=>Numbera.price>Numberb.price?1 : -1; 食物 您的排序不能像aspected那样工作,因为您将价格作为字符串进行比较

您的排序不能像aspected那样工作,因为您将价格作为字符串进行比较


你们的价格很高。需要使它们成为数值,因此价格必须采用单引号。可能是问题的起因?你们的价格太高了。需要使它们成为数值,因此价格必须采用单引号。可能是问题的起因吗?引用:那是。。。不是排序的工作方式,它期望0、1或-1,以及它何时相等?引用:这是。。。不是排序的工作方式,它期望0、1或-1,以及它何时相等?