我有以下方法从数组中删除重复记录,我想通过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 :(得分: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中订购:
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;
解决方案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);
}]);
&#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;