Javascript AngularJS自定义排序

Javascript AngularJS自定义排序,javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,如果我有一个值数组: [1,2,3,4,不适用,不适用,不适用] 如何使用orderBy创建自定义排序,以便字符串始终显示在底部 升序示例: [1,2,3,4,不适用,不适用,不适用] 降序示例: [4,3,2,1,不适用,不适用,不适用] 我尝试过使用函数表达式,但这并不能满足我的需要。函数表达式仅返回要排序的值,但如何使用自己的排序顺序?您可以创建自定义筛选器,根据需要对数组进行排序 app.filter('customOrderBy', function () { return fu

如果我有一个值数组:

[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']:

非常感谢,我是angular新手,这正是我需要的。