【发布时间】:2014-09-10 13:34:13
【问题描述】:
我有一个表格视图中的对象列表,我想正确排序。
除其他外,我的对象包含一个名称字段。此名称字段还可以包含数字,例如:
Chairman
Seat 1
Seat 2
Seat 3
Seat 11
Seat 12
Seat 23
Secretary
然而,这是这样排序的:
Chairman
Seat 1
Seat 11
Seat 12
Seat 2
Seat 23
Seat 3
Secretary
在按名称排序时,这似乎不是一种自然的排序方式。
现在我像这样使用 ng-repeat:
seat in seats | orderBy:orderField:orderReverse track by seat.id
其中orderfield 是单击表头时设置的某个变量,orderReverse 也用于反转。
我尝试制作自定义过滤器以确保其正常运行,但我失败了。除非我分解字符串,否则 Javascript 似乎不会正常订购它。但我宁愿不这样做,因为数据通常是通过轮询来更新的。另一种方法是强制前导零,但由于用户手动输入这些内容,我不确定我是否应该这样做。
而且,它不仅是带有数字的名字,所以我不能完全把它们删掉
那么,有什么建议可以让这个列表正常显示吗?
编辑:清除了有关问题的一些信息。
【问题讨论】:
-
你应该编写自己的排序函数。
-
搜索“自然排序”。
-
@dfsq 我可以做到这一点,但我怎么知道有数字和没有数字之间的区别。我该如何给他们正确的顺序?
-
@blackhole,我在提交之前已经尝试过了,但如果你想正确地按多列排序,这似乎并不奏效。如果我无法解决,我会进一步调查并发布一个 jsfiddle。
-
为什么我的问题是-1?它有足够的信息来创建答案,不是吗?
标签: javascript string angularjs sorting numbers