如何在angular js中使用自定义排序顺序对对象排序
How to sort object in angular js with custom sort order?
我想以自定义排序的方式显示对象的属性数组。下面是数组
$scope.weekDays = [
{
"day" : "TUESDAY",
"count": 10
},
{
"day" : "MONDAY",
"count": 20
},
{
"day" : "WEDNESDAY",
"count": 30
},
{
"day" : "SUNDAY",
"count": 60
}];
如果我们从weekDays
打印day,它就像TUESDAY, MONDAY, WEDNESDAY, SUNDAY
但是我想按顺序显示"SUNDAY", "MONDAY", "FRIDAY", "TUESDAY","WEDNESDAY"
为此我做了如下操作
$scope.orde = ["SUNDAY", "MONDAY", "FRIDAY", "TUESDAY","WEDNESDAY"];
$scope.Sorted = [];
$scope.SortCustomOrder = function() {
var _c =0;
for(var i = 0; i < $scope.orde.length; i++) {
for (var _i = 0; _i < $scope.weekDays.length; _i++) {
if($scope.weekDays[_i].day==$scope.orde[i]) {
$scope.Sorted[_c] = $scope.weekDays[_i];
_c++;
}
}
}
};
并打印$scope.Sorted。它打印我说的话。
有没有办法简化这个或任何其他方法在angularjs?
您可以像这样使用内置的orderBy
过滤器:
app.controller('MainCtrl', function($scope, orderByFilter) {
$scope.weekDays = [{
"day": "TUESDAY",
"count": 10
}, {
"day": "MONDAY",
"count": 20
}, {
"day": "WEDNESDAY",
"count": 30
}, {
"day": "SUNDAY",
"count": 60
}];
var dateOrders = ["SUNDAY", "MONDAY", "FRIDAY", "TUESDAY", "WEDNESDAY"];
$scope.Sorted = orderByFilter($scope.weekDays, function(item) {
return dateOrders.indexOf(item.day);
});
});
示例Plunker: http://plnkr.co/edit/IZfiavmZEpHf4hILdjQs?p=preview
我已经给你做了一个工作活塞
$scope.weekDays = [
{
"id" : 3,
"day" : "TUESDAY",
"count": 10
},
{
"id" : 2,
"day" : "MONDAY",
"count": 20
},
{
"id" : 4,
"day" : "WEDNESDAY",
"count": 30
},
{
"id" : 1,
"day" : "SUNDAY",
"count": 60
}];
$scope.orderedWeekDays = $filter('orderBy')($scope.weekDays, 'id')
http://plnkr.co/edit/WdMQj7dJxuGsR2b9TRvZ?p =预览
对于所有这些排序和过滤操作,我通常使用任何可用的库…
我强烈推荐这个:http://jscriptlinq.codeplex.com/..
对集合进行排序非常简单:
var arr = [{id: 'a', pos: 5},
{id: 'd', pos: 2},
{id: 'b', pos: 4},
{id: 'c', pos: 3},
{id: 'e', pos: 1}];
// col1 = ['e', 'd', 'c', 'b', 'a']
var col1 = $linq(arr)
.orderBy(function (x) { return x.pos; })
.select(function (x) { return x.id; })
.toArray();
// col2 = ['a', 'b', 'c', 'd', 'e']
var col2 = $linq(arr)
.orderBy("x => x.id")
.select("x => x.id")
.toArray();
相关文章:
- ui网格:在自定义表头模板中触发排序
- jquery可从自定义事件中排序
- 我们如何自定义排序JavaScript对象键
- 对Soundcloud自定义播放器播放列表的顺序进行排序
- 高级自定义字段按单选按钮值排序
- ExtJS 4-自定义排序函数只在点击列标题后执行
- 如何使用下划线根据自定义排序顺序对对象数组进行排序
- 通过自定义字母javascript对字符串进行排序
- 从JSON对列表进行自定义排序
- DataTables自定义日期格式排序
- 使用J-query数据表,美国日期格式的自定义排序不起作用
- 当数组的某些部分没有数据时,javascript自定义排序
- AngularJS typeahead添加了按函数自定义排序
- 通过自定义排序 ID 对数据表列进行排序
- 通过跨度自定义值 javascript 对列表重新排序
- 全日历是否支持全天事件的自定义排序
- JQGrid:排序和自定义格式化程序
- AngularJS中的自定义排序函数
- Javascript排序自定义比较器函数-排序一个排序数组
- jQuery排序自定义规则