angular.module('app',[]);
//service
app.service('memberService', function($scope, $filter){
this.filterMembers = function(members) {
members = members || [];
var onlineMembers = [];
var offlineMembers = [];
for(let i=0;i<members.length;i++) {
if(members[i].isOnline == "true") {
onlineMembers.push(members[i]);
} else {
offlineMembers.push(members[i]);
}
}
var filteredMembers = ($filter('orderBy')(onlineMembers,'name')).concat($filter('orderBy')(offlineMembers,'name'));
return filteredMembers;
}
});
//controller
app.controller('ctrl', function($scope, memberService){
$scope.members = [
{
"name":"郑尊",
"career": "打杂"
},{
"name":"孟峰",
"career": "打杂"
},{
"name":"周销",
"career": "打杂"
},{
"name":"周周",
"career": "打杂"
},{
"name":"欧阳",
"career": "打杂"
}
];
$scope.filteredMembers = memberService.filterMembers($scope.members);
})
//最终排序为什么「周」在前面呢?
==>
周周
周销
孟峰
欧阳
郑尊
按照
UTF-16
编码排序所以存在这个问题。可以考虑用 sort-by-pinyin 进行排序,它会把汉子猜测出拼音,再通过拼音首字母排序。