如果我有一个值数组:
[1、2、3、4、不适用、不适用、不适用]
如何使用 orderBy 创建自定义排序,以便字符串始终显示在底部?
升序示例:
[1、2、3、4、不适用、不适用、不适用]
降序示例:
[4、3、2、1、不适用、不适用、不适用]
我试过使用函数表达式,但这并不能满足我的需要。函数表达式只返回要排序的值,但我如何使用自己的排序顺序?
如果我有一个值数组:
[1、2、3、4、不适用、不适用、不适用]
如何使用 orderBy 创建自定义排序,以便字符串始终显示在底部?
升序示例:
[1、2、3、4、不适用、不适用、不适用]
降序示例:
[4、3、2、1、不适用、不适用、不适用]
我试过使用函数表达式,但这并不能满足我的需要。函数表达式只返回要排序的值,但我如何使用自己的排序顺序?
您可以创建一个自定义过滤器,根据需要对数组进行排序。
app.filter('customOrderBy', function () {
return function (arr) {
var numbers = [];
var strings = [];
angular.forEach(arr, function(item){
if(typeof item == 'number' ){
numbers.push(item);
}
else
strings.push(item);
});
return numbers.sort().concat(strings);
};
});
您的阵列上的 ng-repeat 如下所示:
<div ng-repeat="item in array | customOrderBy track by $index">
请注意,我在那里使用了'track by $index',因为 AngularJS ng-repeat 指令不允许在转发器中重复。(您的数组中有重复的“n/a”字符串)
Plunker 在这里按升序排序 [2, 3, 1, 4, 'n/a', 'n/a', 'n/a'] 的原始数组中的数字:http: //plnkr.co/edit /jmHly0lDb5IVeWd2XvHp?p=预览