Javascript Angularjs ng在某些条件下重复:

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

这是我存储的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
  },
  {
    "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'"