【发布时间】:2019-09-12 20:49:17
【问题描述】:
我有一个这样的数组:
var array = [{value: 1, text:"one"},{value: 2, text:"two"},{value: 3, text:"three"}]
我想根据这个变量对其进行排序:var order = '1,3,2';
意思是,它将按照1,3,2 的顺序排列,其中它由数组中对象的value 属性排序。
我在 AngularJS ng-repeat 数组中使用它,但我无法在 orderBy 上使用自定义比较,因为我使用的是版本 1.2.14,它出现在 1.5.7 中。我无法更改版本。
我曾想过从 AngularJS 中提取逻辑并仅在 javascript 中对数组进行排序,但由于它基于数组中的值而不是另一个值进行排序而陷入困境。
例如,我尝试过使用自定义排序,但我只想一次比较一个索引。我不想遍历每一对事物进行排序。我只想使用函数中的a,而不是a 和b。
(function() {
var app = angular.module('test', []);
app.controller("test", function($scope) {
$scope.selectedOption = {};
$scope.availableOptions = [{
value: 1,
text: "one"
}, {
value: 2,
text: "two"
}, {
value: 3,
text: "three"
}];
$scope.availableOptions.sort(sortOptions);
});
var sortOptions = function(a, b) {
var sortBy = '1,3,2';
var values = sortBy.split(',');
for (val in values) {
v = parseInt(val);
if (v === a.value) {
return 0;
} else if (v < a.value) {
return -1;
} else if (v > a.value) {
return 1;
}
}
};
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.14/angular.min.js"></script>
<div ng-app="test" ng-controller="test">
<select ng-model="selectedOption.value">
<option ng-repeat="option in availableOptions" value="{{option.value}}">{{option.text}}</option>
</select>
</div>
我希望下拉列表中的One, Three, Two 按从上到下的顺序排列。有没有办法一次只在数组中使用.sort 和一个值?并且只比较一次?
【问题讨论】:
标签: javascript angularjs sorting