英文:
Find JSON value based on Max date in another field
问题
Sure, here's the translated code snippet without the request for translation:
var jsonData = JSON.parse(responseBody);
var maxDate = null;
var experimentId = null;
for (var i = 0; i < jsonData.length; i++) {
var createdDate = new Date(jsonData[i]["CreatedDate"]);
if (maxDate === null || createdDate > maxDate) {
maxDate = createdDate;
experimentId = jsonData[i]["ExperimentId"];
}
}
postman.setEnvironmentVariable("maxCreatedDateExperimentId", experimentId);
This code will find the maximum CreatedDate
from your JSON response and store the associated ExperimentId
in a Postman environment variable named maxCreatedDateExperimentId
.
英文:
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"]);
}
答案1
得分: 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)
Reduce:
简化:
const maxId = data.reduce((savedMax, { CreatedDate, ExperimentId }) => {
if (CreatedDate > savedMax.date) { // 日期格式可以进行字符串比较
savedMax.date = CreatedDate;
savedMax.id = ExperimentId;
}
return savedMax;
}, { date: "", id: "" }); // 初始化 savedMax
console.log(maxId);
英文:
Here is a better loop
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
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)
<!-- language: lang-html -->
<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>
<!-- end snippet -->
Reduce:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
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);
<!-- language: lang-html -->
<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>
<!-- end snippet -->
答案2
得分: -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);
这是提供的 JavaScript 代码片段。
英文:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
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);
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论