skip to Main Content

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

2

Answers


  1. const jsonDataArray = [{
        "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"
      }
    ];
    
    let newObject = {};
    let dates = jsonDataArray.map(function(obj) {
      const regEx = new RegExp(/-/g);
      const dateKey = parseInt(obj.CreatedDate.replace(regEx, ""), 10)
      newObject[dateKey] = obj;
      return dateKey;
    });
    
    console.log("Max", newObject[Math.max(...dates)].CreatedDate);
    Login or Signup to reply.
  2. 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>
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search