Cub*_*man 10 localization sql-order-by angularjs
我在排序包含不是英文字母的字符串时遇到问题(š,č,ž,..)
这是小提琴:http://fiddle.jshell.net/vhhgh/
这些字母来自斯洛文尼亚字母.
小智 8
已经有一段时间了,但我找到了其他的解决方案:小提琴
HTML:
<div ng-app='test'>
<h2>Users</h2>
<div ng-controller="UsersCtrl">
<ul>
<li ng-repeat="user in users | localeCompareString">
{{user.surname}} {{user.name}}
</li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
(function(angular) {
'use strict';
var test=angular.module('test',[])
.controller('UsersCtrl', ['$scope',function($scope) {
$scope.users = [
{name:'Ben', surname:'Živkovi?'},
{name:'Ken', surname:'AlGore'},
{name:'Erica', surname:'?erv'},
{name:'Jane', surname:'Šinigoj'},
{name:'Kevin', surname:'Sort'},
{name:'Roger', surname:'Willson'},
{name:'Kim', surname:'Zorro'}
];
}]).filter('localeCompareString',function(){
return function (items) {
//window.console.log(items);
items.sort(function (a, b) {
return a.surname.localeCompare(b.surname);
});
return items;
};
});
})(window.angular);
Run Code Online (Sandbox Code Playgroud)
用“外来”字母对字符串数组进行排序并不像您想象的那么容易。事实上,要获得正确的结果可能是一种痛苦。问题归结为这样一个事实:Unicode 字符集包含(几乎)所有现有字符,因此不可能进行通用词典排序,因为不同的国家/地区都有不同的处理排序方式。
为了解决这个问题,我发现TCollator是一个旨在解决该问题的小型库,非常有用。
归档时间: |
|
查看次数: |
5111 次 |
最近记录: |