如何从删除重复数组的数组中获取持续记录

时间:2017-11-08 13:12:32

标签: angularjs angularjs-directive angularjs-ng-repeat

我有以下方法从数组中删除重复记录,我想通过updatedDatetime获取最新的名称记录。如何使用上次更新日期时间对记录进行排序?我想展示最新的记录。

var list = removeDuplicates( listjson, 'user_id');

     function removeDuplicates(originalArray, objKey) {
            var trimmedArray = [];
            var values = [];
            var value;

            for(var i = 0; i < originalArray.length; i++) {
              value = originalArray[i][objKey].name;

              if(values.indexOf(value) === -1) {
                trimmedArray.push(originalArray[i]);
                values.push(value);
              }
            }

            return trimmedArray;

          }

    {
        "_id": "59edd7c5ff809c1c4c7a43c2",
        "updatedDatetime": "2017-11-08T11:51:33.106Z",
        "createdDatetime": "2017-11-08T11:51:33.106Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1090",  
            "name": "sami"
        },
        "__v": 0
    } {
        "_id": "59e9e039d0a8251c7cf29f98",
        "updatedDatetime": "2017-11-08T11:28:33.401Z",
        "createdDatetime": "2017-11-08T11:28:33.401Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    } {
        "_id": "59f42b6823fcdc31b4185246",
        "updatedDatetime": "2017-11-07T07:02:00.841Z",
        "createdDatetime": "2017-11-07T07:02:00.841Z",
        "message": "hi",    
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "sami"
        },
        "__v": 0
    } {
        "_id": "59f1c143a1f0ce2114700ef4",
        "updatedDatetime": "2017-11-06T11:04:35.140Z",
        "createdDatetime": "2017-11-06T11:04:35.140Z",
        "message": "mobile user",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    }]

2 个答案:

答案 0 :(得分:0)

升序:

    <div ng-repeat="record in records | orderBy : 'updatedDatetime'">
       {{ record.updatedDatetime | date : 'dd/MM/yyyy' }}
    </div>

对于降序使用 -

    <div ng-repeat="record in records | orderBy : '-updatedDatetime'">
       {{ record.updatedDatetime | date : 'dd/MM/yyyy' }}
    </div>

答案 1 :(得分:0)

您的记录数组中缺少逗号。

如果您想要最新的更新时间,那么您必须对数组进行排序: 见下面的一个例子。 解决方案1 ​​: 如果你想在html中订购:

&#13;
&#13;
var app = angular.module('myAngularApp', []);

app.controller('test', function ($scope,$q) {
     $scope.arr = [{
        "_id": "59edd7c5ff809c1c4c7a43c2",
        "updatedDatetime": "2017-11-08T11:51:33.106Z",
        "createdDatetime": "2017-11-08T11:51:33.106Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1090",  
            "name": "sami"
        },
        "__v": 0
    }, {
        "_id": "59e9e039d0a8251c7cf29f98",
        "updatedDatetime": "2017-11-08T11:28:33.401Z",
        "createdDatetime": "2017-11-08T11:28:33.401Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    } ,{
        "_id": "59f42b6823fcdc31b4185246",
        "updatedDatetime": "2017-11-07T07:02:00.841Z",
        "createdDatetime": "2017-11-07T07:02:00.841Z",
        "message": "hi",    
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "sami"
        },
        "__v": 0
    }, {
        "_id": "59f1c143a1f0ce2114700ef4",
        "updatedDatetime": "2017-11-06T11:04:35.140Z",
        "createdDatetime": "2017-11-06T11:04:35.140Z",
        "message": "mobile user",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    }]
});
&#13;
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body ng-app="myAngularApp">
<div ng-controller="test">
   <div ng-repeat = "a in arr|orderBy:'updatedDatetime' : true">
    {{a.updatedDatetime}}
   
   </div>
</div>

</body>
</html>
&#13;
&#13;
&#13;

解决方案2 : 如果你想在你的js中这样做:

&#13;
&#13;
var app = angular.module('myAngularApp', []);

app.controller('ExampleController', ['$scope', 'orderByFilter', function($scope, orderBy) {
     $scope.arr = [{
        "_id": "59edd7c5ff809c1c4c7a43c2",
        "updatedDatetime": "2017-11-08T11:51:33.106Z",
        "createdDatetime": "2017-11-08T11:51:33.106Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1090",  
            "name": "sami"
        },
        "__v": 0
    }, {
        "_id": "59e9e039d0a8251c7cf29f98",
        "updatedDatetime": "2017-11-08T11:28:33.401Z",
        "createdDatetime": "2017-11-08T11:28:33.401Z",
        "message": "test sms for mobile",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    } ,{
        "_id": "59f42b6823fcdc31b4185246",
        "updatedDatetime": "2017-11-07T07:02:00.841Z",
        "createdDatetime": "2017-11-07T07:02:00.841Z",
        "message": "hi",    
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "sami"
        },
        "__v": 0
    }, {
        "_id": "59f1c143a1f0ce2114700ef4",
        "updatedDatetime": "2017-11-01T11:04:35.140Z",
        "createdDatetime": "2017-11-09T11:04:35.140Z",
        "message": "mobile user",
        "user_id": {
            "_id": "59f07d5c935f27764c8d1091",  
            "name": "zami"
        },
        "__v": 0
    }]
    
    
    $scope.propertyName = 'updatedDatetime';
    $scope.reverse = true;
    $scope.arr = orderBy($scope.arr, $scope.propertyName,          $scope.reverse);
}]);
&#13;
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body ng-app="myAngularApp">
<div ng-controller="ExampleController">
   <div ng-repeat = "a in arr   ">
    {{a.updatedDatetime}}
   
   </div>
</div>

</body>
</html>
&#13;
&#13;
&#13;