[英]AngularJS $filter('orderBy') strange sorting
看起來像AngularJS $filter("orderBy")
工作方式與Array.prototype.sort
工作方式不同。 我為這個問題寫了一個例子:
模板:
<div ng-app="app" ng-controller="ctrl">
<div>arr1 angular </br>{{ arr1ang }}</div>
<div>arr2 angular </br>{{ arr2ang }}</div>
<div>arr1 js </br>{{ arr1js }}</div>
<div>arr2 js </br>{{ arr2js }}</div>
</div>
控制器:
angular.module('app', []);
function ctrl ($scope, $filter) {
arr1 = [
{value: "AA"},
{value: "AB"},
{value: "aa"},
{value: "ab"}
];
arr2 = [
{value: "d"},
{value: "D"},
{value: "w"},
{value: "e"},
{value: "i"},
{value: "O"},
{value: "o"},
{value: "r"}
];
$scope.arr1ang = $filter('orderBy')(arr1, "value");
$scope.arr2ang = $filter('orderBy')(arr2, "value");
function comp(a,b){
if (a.value > b.value)
return 1;
else if (b.value > a.value)
return -1;
else
return 0;
}
arr1.sort(comp);
arr2.sort(comp);
$scope.arr1js = arr1;
$scope.arr2js = arr2;
}
angular
.module('app')
.controller('ctrl', ctrl);
結果:
arr1 angular
[{"value":"AA"},{"value":"aa"},{"value":"AB"},{"value":"ab"}]
arr2 angular
[{"value":"d"},{"value":"D"},{"value":"e"},{"value":"i"},{"value":"O"},{"value":"o"},{"value":"r"},{"value":"w"}]
arr1 js
[{"value":"AA"},{"value":"AB"},{"value":"aa"},{"value":"ab"}]
arr2 js
[{"value":"D"},{"value":"O"},{"value":"d"},{"value":"e"},{"value":"i"},{"value":"o"},{"value":"r"},{"value":"w"}]
我在這里做了一個關於它的Codepen示例。
我不明白什么或者它是AngularJS中的一個錯誤?
Angularjs按字母順序排列不區分大小寫。 在JavaScript中,字符串比較區分大小寫。
一種解決方案是在比較之前將所有值轉換為小寫或大寫字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.