我有一组具有以下结构的对象数组:
parentArr = [
[{id:1, date:1505020200000}, {id:4, date:1505020200000 }],
[{id:2, date:1504681500000}],
[{id:3, date:1504671000000}, {id:20, date:1504671000000}]
]
每个子数组只包含相同的日期。
我要做的是使用angular的orderBy过滤器来排序从最旧到最新的日期,但我不确定如何去做。
我已经尝试将orderby过滤器设置为如下变量:
$scope.dateFilter= arr[0][0].date
<div ng-repeat="child in parentArr | orderBy: dateFilter">
但我确定我做错了什么。
编辑:
感谢Matthew帮助我的所有工作,并且由于他的帮助,我意识到我需要做什么。使用array.sort是我最终需要的数据结构。
$scope.results.sort(function (a, b) {
return a[0].date - b[0].date;
});
答案 0 :(得分:1)
创建自定义过滤器以展平数组:
(function(app){
app.filter("flatten", function() {
return function(input) {
var output = [];
input.forEach(function(innerArr) {
output = output.concat(
innerArr.map(function(obj) { return obj; })
);
return output;
});
return output;
};
});
}(angular.module("yourModule")));
然后您的ng-repeat
变为:
<div ng-repeat="child in parentArr | flatten | orderBy: 'date'">
<强> CodePen Demo 强>
答案 1 :(得分:0)
添加一个getter函数来获取要排序的值。
$scope.myDateGetter = function(item) {
return item[0].date;
}
然后将其作为表达式参数传递给orderBy过滤器。
<div ng-repeat="child in parentArr | orderBy: myDateGetter">