-1

値の配列がある場合:

[1、2、3、4、該当なし、該当なし、該当なし]

文字列が常に一番下に表示されるように、orderBy でカスタム ソートを作成するにはどうすればよいですか?

昇順の例:

[1、2、3、4、該当なし、該当なし、該当なし]

降順の例:

[4、3、2、1、該当なし、該当なし、該当なし]

関数式を使用してみましたが、必要なことができません。関数式は並べ替えられる値のみを返しますが、独自の並べ替え順序を使用するにはどうすればよいですか?

4

1 に答える 1

4

必要に応じて配列を並べ替えるカスタム フィルターを作成できます。

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">

AngularJS ng-repeat ディレクティブはリピーターでの重複を許可しないため、そこで「track by $index」を使用したことに注意してください。(配列に「n/a」文字列が重複していました)

Plunker は元の配列 [2, 3, 1, 4, 'n/a', 'n/a', 'n/a'] の数値を昇順に並べ替えます: http://plnkr.co/edit /jmHly0lDb5IVeWd2XvHp?p=プレビュー

于 2014-10-07T01:03:14.627 に答える