AngularJS-对字符串中包含数字的重复进行排序
AngularJS - Sorting ng-repeat on string with numbers in them
我在表视图中有一个对象列表,我想正确排序。
除其他外,我的对象还包含一个名称字段。此名称字段也可以包含数字,例如:
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重复如下:
seat in seats | orderBy:orderField:orderReverse track by seat.id
其中orderfield
是单击表头时设置的某个变量,orderReverse
也用于反转。
我试过做一个自定义过滤器来确保它正常工作,但我失败了。似乎Javascript不会正常订购它,除非我分解字符串。但我宁愿不这样做,因为数据经常通过民意调查来更新。另一种方法是强制前导零,但由于用户手动输入这些内容,我不确定是否应该输入。
此外,它不仅仅是有数字的名字,所以我不能完全切断
那么,关于如何让这个列表正常显示,有什么建议吗?
编辑:清除了有关该问题的一些信息。
您可以使用orderBy
的自定义排序函数(它也可以使用自定义排序函数)
在控制器中定义一个排序函数:
$scope.sorter = function (a){
return parseInt(a.replace( /^'D+/g, '')); // gets number from a string
}
然后在你的模板中
seat in seats | orderBy:sorter track by seat.id
根据修改后的问题说明编辑:
使用naturalSort 在控制器中进行手动排序,而不是使用ng repart
$scope.seats = [{"id": "Seat 12"},{"id": "Seat 3"},{"id": "Seat 1"},{"id": "Seat 2"},{"id": "Secretary"}];
$scope.seats.sort(function(a,b) {
return naturalSort(a.id, b.id);
})
或者检查这个角度模块http://blog.overzealous.com/post/55829457993/natural-sorting-within-angular-js小提琴在展示它http://jsfiddle.net/wE7H2/3/
- Javascript排序字符串或数字
- 对角度数据表中括号内的数字进行排序
- Javascript按数字顺序排序()数组
- 如何对混合格式的数字(89900,1k,1.5k,15.2k)进行排序
- 可以用javascript对包含数字的字符串进行排序
- 如何对字母数字字符串值进行排序
- Javascript - 先排序字母,然后排序数字
- Javascript从关联数组中查找最低数字(气泡排序方法)
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 当键是数字时,如何在JavaScript中对对象值进行排序
- lodash-sortby,如何将数字排序晚于字母
- 如何在 JavaScript 中用逗号分隔的
- 为什么 javascript 不按数字顺序对数字数组进行排序
- 对两个数组进行排序在两位数字上失败
- 使用数字和字符串对列进行排序
- 如何按数字升序对对象数组进行排序
- 对具有点分隔数字的属性的对象数组进行排序
- 我如何预先排序数字,而不是搞砸格式
- JavaScript正确排序数字
- 如何从使用D3.js读取的csv文件中排序数字列-列作为字符串读取