【发布时间】:2018-05-28 10:47:59
【问题描述】:
我有一个 JSON 文件,它是从包含不同应用程序名称和时间戳以及其他详细信息的远程 api 中获取的。我需要使用两个过滤器过滤这个 json,即应用程序名称 + 最新时间戳。 json文件如下:
{
"data": [
{
"appDetails": [
{
"appDescription": [
{
"appName": "App 1",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.24",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 1",
"timeStamp": "2018-05-27T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.23",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-26T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.22",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.3",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-26T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.2",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 3",
"timeStamp": "2018-05-27T00:01:01.001Z",
"GitTag": "RELEASE-1.0.0.9",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 3",
"timeStamp": "2018-05-25T00:01:01.001Z",
"GitTag": "RELEASE-1.0.0.8",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 4",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.1.1.8",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 4",
"timeStamp": "2018-05-25T00:01:01.001Z",
"GitTag": "RELEASE-1.1.1.6",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
}
]
}
]
}
]
}
例如,我需要从上面的 json 中筛选出一个包含应用程序名称和最新时间戳的过滤数组。
filteredArray = [{
"appName": "App 1",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.24",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.3",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 3",
"timeStamp": "2018-05-27T00:01:01.001Z",
"GitTag": "RELEASE-1.0.0.9",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 4",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.1.1.8",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
}
]
我现在的 angularjs 代码如下所示:
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.tableData = [{
"appName": "App 1",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.24",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 1",
"timeStamp": "2018-05-27T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.23",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-26T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.22",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.3",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 2",
"timeStamp": "2018-05-26T00:01:01.001Z",
"GitTag": "RELEASE-1.0.1.2",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 3",
"timeStamp": "2018-05-27T00:01:01.001Z",
"GitTag": "RELEASE-1.0.0.9",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 3",
"timeStamp": "2018-05-25T00:01:01.001Z",
"GitTag": "RELEASE-1.0.0.8",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 4",
"timeStamp": "2018-05-28T00:01:01.001Z",
"GitTag": "RELEASE-1.1.1.8",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
},
{
"appName": "App 4",
"timeStamp": "2018-05-25T00:01:01.001Z",
"GitTag": "RELEASE-1.1.1.6",
"blocker": 3,
"critical": 4,
"major": 30,
"minor": 3,
"UnitTestsTotal": 59,
"FailedTests": 0,
"CodeCoverage": 90
}
]
$scope.appNames = Array.from(new Set($scope.tableData.map(a => a.appName)));;
$scope.expanding = {};
for (index = 0; index < $scope.appNames.length; index++) {
$scope.expanding[$scope.appNames[index]] = false;
}
$scope.swapExpanding = function(name) {
$scope.expanding[name] = !$scope.expanding[name];
}
}
请帮助我,因为我是 javascript 和 angular js 的新手。非常感谢根据 appName 键和最新时间戳过滤我的 angularjs 代码中的数组的任何帮助。提前致谢。
【问题讨论】:
标签: javascript angularjs json