2017-11-08 13 views
0

重複するレコードを配列から削除するには、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 
    }] 

答えて

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> 
0

を。

最新のupdatedTimeが必要な場合は、配列をソートする必要があります。 下記の例を参照してください。 ソリューション1: あなたがHTMLでそれを注文したい場合は、次の

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 
 
    }] 
 
});
<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>

解決策2:あなたのJSでそれをしたい場合は :

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); 
 
}]);
<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>

関連する問題