Хранение даты в массиве объектов в цикле for - PullRequest
0 голосов
/ 03 ноября 2019

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

Итак, в основном код выглядит так (dateAdd взят из https://stackoverflow.com/a/1214753/12316962):

var baddata = []

fetch(fetch_url)
  .then((response) => {
    if (response.ok) {
      response.json()
        .then(data => data = data.workOpportunities)
        .then(() => {
          for (let i = 0; i < data.length; i++) {
            data[i]['rooms'] = 0
            data[i]['ontime'] = 0
            data[i]['ontime'] = dateAdd(
              new Date(time),
              'second',
              Math.round(data[i].distance.value / 50 * 60 * 60)
            )
          }
          for (let i = 0; i < data.length; i++) {
            if (/*checking ontime and other conditions*/) {
              //do something
            }
            //do not do anything and push the data to baddata array
          }
        }
        )
    }
  }).catch((err) => console.error(err))

data[i]['ontime'] показывает'invalid date {}', и поэтому "операторы if" терпят неудачу. Первоначально у меня был всего один цикл для всего этого, он был таким же.

Когда я запускаю нижеприведенное, он отлично работает внецикл.

data[0]['ontime'] = dateAdd(
  new Date(time),
  'second',
  Math.round(data[0].distance.value / 50 * 60 * 60)
)

ОБНОВЛЕНИЕ: Я заполнил массив всеми объектами, которые я получил до сих пор. Кажется, что цикл работает правильно, если я запускаю его как есть.

это связано с асинхронной функцией / извлечением?

Где беспорядок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...