我在网上发现了一种自然排序功能,似乎已经为许多人提供了诀窍。我将这种自然排序功能实现到我的数据表中,它在一定程度上改善了我得到的结果。
我需要自然排序的原因是因为我有货币值表示为字符串。
例如,如果我有这些值:
{"550", "750", "1,250", "850", "2,300", "400"}
自然排序数组应按此顺序返回:
然而,自然排序与逗号混淆并返回如下:
有没有办法操纵现有的功能来考虑这些逗号?
以下是我一直在使用的排序算法的链接: http://datatables.net/plug-ins/sorting/natural
修改
还应该注意到我使用的是一个实体框架,其中对象中的Balance字段是一个字符串,但在数据库中是一个小数。在将Balance值添加到对象之前,必须使用字符串格式。
因此解析方法在这种情况下不起作用,我需要能够改变实际函数的一部分,它允许我分割逗号并读取余额的全数值。
答案 0 :(得分:0)
您的号码被解释为字符串。首先尝试转换它们:使用parseFloat()
或parseInt()
作为货币。
注意JS中已经有一个排序函数。
来源:
答案 1 :(得分:0)
所以我找到了一个适合我的解决方案。
在现有的自然排序函数中,有两个名为re
和sre
的正则表达式变量。
在定义re
的{{1}}变量中,我更改为[0-9]
以允许负值。此外,在[0-9.-]
变量中,我添加了一个额外的sre
,它允许字符串替换格式将所有逗号值替换为|[ ]*,
,最终允许我的字符串正确排序。
希望此解决方案有所帮助。功能代码的链接在原始问题的上方。