Javascript 按对象属性列出的对象的JS顺序数组(美元)
我花了很长时间才弄明白这一点。 我的vuejs应用程序中有一组对象,如下所示: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
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,以及它何时相等?