AngularJS ng-repeat order通过错误地订购数字

问题描述 投票:6回答:1

当文本中有数字时,我在使用ng-repeat orderBy时遇到问题。

样本数据:

[
   {booth: 'p1'},
   {booth: 'p2'},
   {booth: 'p3'},
   {booth: 'p4/5'},
   {booth: 'p6/7'},
   {booth: 'p8'},
   {booth: 'p9'},
   {booth: 'p10'},
   {booth: 'p11'},
   {booth: 'p12'},
   {booth: 'p13'}
]

ng-repeat一起使用orderBy: 'booth'时,将其列出如下:p1,p10,p11,p13,p2等)>

我知道这是预期的行为,但是没有人知道我怎样才能按照期望的顺序列出摊位?

哪个是:p1,p2,p3,p4 / 5等)>

我还尝试查看问题是否是因为数字不是整数,但返回了相同的问题。

谢谢您的帮助。

当文本中有数字时,我在使用ng-repeat orderBy时遇到问题。示例数据:[{booth:'p1'},{booth:'p2'},{booth:'p3'},{booth:'p4 / 5'},{booth:'p6 / 7'},{。 ..

javascript angularjs angularjs-ng-repeat angularjs-filter angularjs-orderby
1个回答
13
投票

JavaScript的内置字符串比较无法满足您的目的。我认为所需要的是自然排序

,以便按照人类的方式对字符串进行排序。我从博客here找到了可靠的实现here。它非常全面而且非常复杂,因此我不会在这里解释源代码(请查看博客以获取解释)。
© www.soinside.com 2019 - 2024. All rights reserved.