У меня есть данные из запроса API и я пытался сохранить их во временном массиве, используя foreach, и фильтровать временный массив после завершения foreach .... в моем случае я добавил счетчик для сравнения, если счетчик равна длине данных API. Тем не менее, я заметил, что он работал только тогда, когда данные API малы, скажем, data.length = 15, но когда он достигает 20+, каким-то образом он игнорирует счетчик.
вот мой код:
var flag = 0;
dato.forEach((el) => {
temp.push({
id: el.id,
sex: el.sex,
name: el.name,
[self.momentFormat(el.date, 'YYYY-MM-DD').toString()]: ({
activity: el.activity,
status : el.status,
record: el.record
})
});
flag++;
});
setTimeout(() => {
//This is what I get when I pass a parameter with date from Apr 1 to Apr 15,
//But when I pass Apr 1 to Apr 20... None of the logs shows up even though the api data is not empty
console.log('dato length=', dato.length); //I get 8
console.log('temp length=', temp.length); //I get 13
console.log('flag length=', flag.length); //I get 8
},5000)
if(flag == dato.length) {
var result = temp.filter(function(v) {
return this[v.id]?
!Object.assign(this[v.id], v) : (this[v.id] = v)
}, {});
self.overtime_dtr_records = result;
}
Я пытался установить время ожидания, но я не думаю, что это самый оптимальный способ. Помимо устранения цели быстрого запроса API, я также заметил, что некоторые из temporary array data
не включены в процесс подбора.
ОБНОВЛЕНИЕ: Я думаю, что сравнение счетчика с длиной данных является правильным. Проблема в том, что когда я записываю длину данных API, я получаю 45, но l oop повторяется только 4 раза