gpt4 book ai didi

javascript - 按多个属性对数组中的对象进行排序

转载 作者:行者123 更新时间:2023-11-29 18:22:00 25 4
gpt4 key购买 nike

我是 js 的新手,正在尝试按两个字段对对象数组进行排序 - 从第一个属性开始,然后按第二个属性。这两个属性都是数字。

数据是:

var homes = [{
"h_id": "3",
"minimumorder": "12",
"price": "17"
}, {
"h_id": "4",
"minimumorder": "1",
"price": "20"
}, {
"h_id": "5",
"minimumorder": "1",
"price": "18.10"
}

数组中还有更多的对象,这是一个简化的例子。下面的代码几乎可以让我到达那里,但是对于 minimumorder 属性,它将 12 放在 1 之后而不是 6 之后:

cmp = function(a, b) {
parseFloat(a);
parseFloat(b);
if (a > b) return +1;
if (a < b) return -1;
return 0;
}

homes.sort(function(a, b) {
return cmp(a.minimumorder,b.minimumorder) || cmp(a.price,b.price)
})

jsFiddle here .

任何帮助将不胜感激,因为我一直在谷歌搜索和修补数小时试图解决这个问题。

最佳答案

您需要将解析后的值重新分配回ab:

a = parseFloat(a);
b = parseFloat(b);

否则它最终会比较字符串,并且 12 在词法上出现在 1 之后,就像单词 at 出现在 a< 之后一样 在字典中。

Updated fiddle .

关于javascript - 按多个属性对数组中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com