I have a JSON response body that looks like this:
[
{
"ExperimentPlanningId": 20,
"ExperimentId": "PT1011",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2022-10-14T20:10:42.8276862+00:00"
},
{
"ExperimentPlanningId": 20,
"ExperimentId": "JD2994",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2023-03-31T16:23:19.5981913+00:00"
}
]
I want to loop through the response body in Postman, find the MAX CreatedDate
and store the ExperimentId
associated with it, in a variable. So in the example above I'd want to store JD2994 in a variable.
I started with this, but am getting a max is not defined error:
var jsonData = JSON.parse(responseBody)
for (var i=0, len = jsonData.length; i<len; i++) {
var value = max(jsonData[i]["CreatedDate"]);
}
Here is a better loop
let maxDate = 0;
let maxId = "";
data.forEach(({CreatedDate, ExperimentId}) => {
const d = new Date(CreatedDate).getTime();
if (d > maxDate) {
maxId = ExperimentId;
maxDate = d;
}
})
console.log(new Date(maxDate), maxId)
<script>
data = [
{
"ExperimentPlanningId": 20,
"ExperimentId": "PT1011",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2022-10-14T20:10:42.8276862+00:00"
},
{
"ExperimentPlanningId": 20,
"ExperimentId": "JD2994",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2023-03-31T16:23:19.5981913+00:00"
}
]</script>
Reduce:
const maxId = data.reduce((savedMax, {CreatedDate, ExperimentId}) => {
if (CreatedDate > savedMax.date) { // the date format is string comparable
savedMax.date = CreatedDate;
savedMax.id = ExperimentId;
}
return savedMax;
}, { date: "", id: ""}); // initialise savedMax
console.log(maxId);
<script>
data = [{
"ExperimentPlanningId": 20,
"ExperimentId": "PT1011",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2022-10-14T20:10:42.8276862+00:00"
},
{
"ExperimentPlanningId": 20,
"ExperimentId": "JD2994",
"AnalystId": 2,
"ExperimentTemplateId": 1,
"NumberoFPools": null,
"ExperimentStatus": "InProgress",
"NextProcess": "234343",
"CurrentProcess": "Test Process 1",
"NextStage": "Stage 1 2",
"CurrentStage": "Stage 1 2",
"NextProcessStartDate": "2022-10-15T14:00:00+00:00",
"CurrentProcessEndDate": "2022-10-15T14:00:00+00:00",
"ExperimentStartDate": "2022-10-14T15:00:00+00:00",
"ProjectedOutcome": null,
"ExperimentalDesign": null,
"IsActive": true,
"CreatedDate": "2023-03-31T16:23:19.5981913+00:00"
}
]
</script>