値の配列がある場合:
[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">
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=プレビュー