我正在尝试在JavaScript中对美元范围进行排序。问题在于响应值的排序方式如下
['$10,000 - $29,999', '$30,000 - $49,999', '$5,000 - $9,999', '$50,000+', 'Lower than $5,000']
needs to be sorted to
['Lower than $5,000', '$5,000 -$9,999', '$10,000 - $29,999', '$30,000 - $49,999', '$50,000+']
我想像这样按升序排序,但从某种意义上说,我希望它是健壮的,如果API更改了它发送此数据的顺序,它仍然保持相同的排序:
有没有一种方法可以对分类算法进行硬编码?
答案 0 :(得分:2)
您可以尝试以下方法:
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
说明:
编辑 :
我已经根据评论对代码进行了编辑(我知道这不是最漂亮的代码,但是它可以工作)
答案 1 :(得分:1)
如果您的setDaemon(True)
将被保留,您可以创建一个对象来维护SELECT
radcheck.username AS username,
group.name AS groupname,
group.id as gid,
useremail.email as email
FROM useremail, group, radcheck
WHERE
radcheck.username = useremail.username
AND group.id = radcheck.id_group;
与分配的订单之间的关系。然后,您可以在Array.sort()方法中使用该对象:
ranges
ranges
为避免混淆范围,另一种解决方案可以使用自定义函数来匹配每个字符串的最大范围值。
const rangeOrder = {
'Lower than $5,000': 0,
'$5,000 - $9,999': 1,
'$10,000 - $29,999': 2,
'$30,000 - $49,999': 3,
'$50,000+': 4,
}
let input = ['$10,000 - $29,999', '$30,000 - $49,999', '$5,000 - $9,999', '$50,000+', 'Lower than $5,000'];
console.log(input.sort(
(a, b) => rangeOrder[a] - rangeOrder[b]
));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}