Я работал над проектом, в котором после получения данных мне необходимо просматривать массив объектов, манипулировать ими, а затем сохранять те из них, которые удовлетворяют определенным условиям. Все остальное работало, но сохранение даты в объекте.
Итак, в основном код выглядит так (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)
)
ОБНОВЛЕНИЕ: Я заполнил массив всеми объектами, которые я получил до сих пор. Кажется, что цикл работает правильно, если я запускаю его как есть.
это связано с асинхронной функцией / извлечением?
Где беспорядок?