Как написать условный оператор в почтальоне на основе значения в массиве - PullRequest
0 голосов
/ 03 мая 2019

В каждом элементе массива может быть или не быть значение, которое мне нужно получить.Если значение не в одном элементе, я хочу перейти к следующему элементу, чтобы найти его.Я хотел бы знать, как написать заявление, чтобы сделать это в моем тесте почтальона.Я уже знаю, как получить значения, когда они существуют, но я хочу просмотреть каждый элемент, пока не найду то, что ищу, чтобы вставить переменную.

Я гуглил, как написать код, но я новичок в этом, и у меня возникли проблемы.

var jsonData = JSON.parse (responseBody);postman.setGlobalVariable ("Дата", jsonData.array [0] .field [1]);

if (postman.setGlobalVariable ("Дата", jsonData.array [0] .field [1]) === ??? else (postman.setGlobalVariable ("Date", jsonData.array [1] .field [1]);)

Привет, вот пример ответа (спасибо!): Вы можете увидетьпервый элемент не имеет значения "NeedTheseDates", которое мне нужно получить, но второй элемент имеет.

"SampleArray": [{"Date": "2019-05-18T00: 00: 00.0000000-04: 00 "," NeedTheseDates ": []," Anything ":" data "," OnlyDate ":" 2019-06-03T00: 00: 00.0000000-04: 00 "}, {" Date ":" 2019-06-16T00: 00: 00.0000000-04: 00 "," NeedTheseDates ": [" 2019-07-02T00: 00: 00.0000000-04: 00 "," 2019-07-03T00: 00: 00.0000000-04: 00 ",«2019-07-04T00: 00: 00.0000000-04: 00», «2019-07-05T00: 00: 00.0000000-04: 00», «2019-07-06T00: 00: 00.0000000-04: 00», «2019-07-07T00: 00: 00.0000000-04: 00 "," 2019-07-08T00: 00: 00.0000000-04: 00 "," 2019-07-09T00: 00: 00.0000000-04: 00 "," 2019-07-10T00: 00: 00.0000000-04: 00 "," 2019-07-11T00: 00: 00.0000000-04: 00 ","2019-07-12T00: 00: 00.0000000-04: 00"],

1 Ответ

0 голосов
/ 09 мая 2019

Не совсем уверен в постановке проблемы. Итак, пробуем все комбинации

Если есть только два случая, когда значение может быть (индекс 0 или 1)

let someDate = jsonData.array[0].field[1] === '???' ? 
    jsonData.array[0].field[1] : jsonData.array[1].field[1];

postman.setGlobalVariable('Date', someDate);

Если длина массива динамическая, но искомая дата в поле всегда находится в индексе 1

let someDate;

jsonData.array.forEach((element) => {
  element.field[1] === '???' && (someDate = element.field[1]);
});

postman.setGlobalVariable('Date', someDate);

Это будет проходить через все предметы, независимо от того, найдет ли он правильный элемент раньше. Вы можете использовать some, чтобы остановить это

let someDate;

jsonData.array.some((element) => {
  if (element.field[1] === '???') {
    someDate = element.field[1]);
    return true; // this will stop the loop
  }
});

postman.setGlobalVariable('Date', someDate);

Если длина массива динамическая, а поле также динамическое

let someDate;

jsonData.array.some((element) => {
  element.field.some((oneDate) => {
    if (oneDate === '???') {
      someDate = oneDate;
      return true; // this will stop the inner loop
    }
  });

  if (someDate) {
    return true; // this will stop the outer loop
  }
});

postman.setGlobalVariable('Date', someDate);
...