Javascript Angularjs ng在某些条件下重复:
这是我存储的json响应Javascript Angularjs ng在某些条件下重复:,javascript,arrays,angularjs,json,object,Javascript,Arrays,Angularjs,Json,Object,这是我存储的json响应 $scope.times = response.data; 我的$scope.times json对象: [ { "id": 1, "status": true, "time": "2018-03-05T10:24:15.000Z", "complaintId": 1 }, { "id": 2, "status": true, "time": null, "complaintId": 1
$scope.times = response.data;
我的$scope.times json对象:
[
{
"id": 1,
"status": true,
"time": "2018-03-05T10:24:15.000Z",
"complaintId": 1
},
{
"id": 2,
"status": true,
"time": null,
"complaintId": 1
},
{
"id": 3,
"status": true,
"time": "2018-03-05T10:53:14.000Z",
"complaintId": 2
},
{
"id": 6,
"status": false,
"time": "2018-03-05T11:58:45.000Z",
"complaintId": 1
},
{
"id": 7,
"status": true,
"time": "2018-03-05T12:11:53.000Z",
"complaintId": 1
},
{
"id": 8,
"status": false,
"time": "2018-03-05T13:23:13.000Z",
"complaintId": 2
},
{
"id": 9,
"status": true,
"time": "2018-03-05T08:17:18.000Z",
"complaintId": 3
},
{
"id": 10,
"status": true,
"time": "2018-03-05T12:32:08.000Z",
"complaintId": 2
}
]
我使用ng repeat='time in times'在html中显示它,但是我需要使用位于最后一个位置的complaintId获取times的json对象,例如,在对象中有许多complaintId:1
我只需要得到最后抱怨过的东西
我在时间内的预期输出:
[
{
"id": 7,
"status": true,
"time": "2018-03-05T12:11:53.000Z",
"complaintId": 1
},
{
"id": 9,
"status": true,
"time": "2018-03-05T08:17:18.000Z",
"complaintId": 3
},
{
"id": 10,
"status": true,
"time": "2018-03-05T12:32:08.000Z",
"complaintId": 2
}
]
我的ng重复循环代码:
table
tr
th S.no
th Time
tr(ng-repeat='time in times')
td {{$index + 1 }}
td {{time.status}}
(不要评判,今天是星期一)
这是我能找到的最好的解决办法。您可以通过使用一些ES6魔术和.reduce
/.filter
/.forEach
等来明显地改进它(使其更短)
{{time | json}}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.times=[{“id”:1,“status”:true,“time”:“2018-03-05T10:24:15.000Z”,“complaintId”:1},{“id”:2,“status”:true,“time”:null,“complaintId”:1},{“id”:3,“status”:true,“time”:“2018-03-05T10:53:14.000Z”,“complaintId”:2},{“id”:6,“status”:false,“time”:“2018-03-05T11:58:45.000Z”,“complaintId”:1},{“id”:7,“status”:true,“time”:“time”:,“complaintId”:1},{“id”:8,“status”:false,“time”:“2018-03-05T13:23:13.000Z”,“complaintId”:2},{“id”:9,“status”:true,“time”:“2018-03-05T08:17:18.000Z”,“complaintId”:3},{“id”:10,“status”:true,“time”:“2018-03-05T12:32:08.000Z”,“complaintId”:2};
var a=$scope.times;
变量b=[];//收集投诉ID
对于(var i=0;i,您可以使用角度滤波器模块
ng-repeat="time in times | unique: 'complaintId'"
angular.module('app',['angular.filter']))
.controller('test',函数($scope){
$scope.items=[
{
“id”:1,
“状态”:正确,
“时间”:“2018-03-05T10:24:15.000Z”,
“投诉”:1
},
{
“id”:2,
“状态”:正确,
“时间”:空,
“投诉”:1
},
{
“id”:3,
“状态”:正确,
“时间”:“2018-03-05T10:53:14.000Z”,
“投诉”:2
},
{
“id”:6,
“状态”:假,
“时间”:“2018-03-05T11:58:45.000Z”,
“投诉”:1
},
{
“id”:7,
“状态”:正确,
“时间”:“2018-03-05T12:11:53.000Z”,
“投诉”:1
},
{
“id”:8,
“状态”:假,
“时间”:“2018-03-05T13:23:13.000Z”,
“投诉”:2
},
{
“id”:9,
“状态”:正确,
“时间”:“2018-03-05T08:17:18.000Z”,
“投诉”:3
},
{
“id”:10,
“状态”:正确,
“时间”:“2018-03-05T12:32:08.000Z”,
“投诉”:2
}
]
});
{{$index+1}}
{{item.status}
尝试使用loadash库
{{c.complaintId}-{c.time}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.times=[{
“id”:1,
“状态”:正确,
“时间”:“2018-03-05T10:24:15.000Z”,
“投诉”:1
},
{
“id”:3,
“状态”:正确,
“时间”:“2018-03-05T10:53:14.000Z”,
“投诉”:2
},
{
“id”:6,
“状态”:假,
“时间”:“2018-03-05T11:58:45.000Z”,
“投诉”:1
},
{
“id”:7,
“状态”:正确,
“时间”:“2018-03-05T12:11:53.000Z”,
“投诉”:1
},
{
“id”:8,
“状态”:假,
“时间”:“2018-03-05T13:23:13.000Z”,
“投诉”:2
},
{
“id”:9,
“状态”:正确,
“时间”:“2018-03-05T08:17:18.000Z”,
“投诉”:3
},
{
“id”:10,
“状态”:正确,
“时间”:“2018-03-05T12:32:08.000Z”,
“投诉”:2
}
];
$scope.times=\.sortBy($scope.times,'time').reverse();
$scope.times=\.uniqBy($scope.times,'complaintId');
//log($scope.times);
});
请发布您迄今为止尝试过的循环。我正在通过正常的ng repeat进行循环。@messerbillso发布模板中包含repeat的部分。确定我将更新为什么不直接在数组上排序/筛选/任何您喜欢的内容?显示将相应更新。如果需要保留原始数组,请复制一份以供显示使用最好编写自己的过滤器,对日期进行排序和比较,只保留每个投诉ID的最后一条记录
ng-repeat="time in times | unique: 'complaintId'"