Как вывести первые 3 поля, если у них ACCEPT = 1?
Как вывести первые 3 поля, если у них ACCEPT = 1 ?
Попытался через перебор массива с условием if, но выводит все записи сразу с таким условием. Не могу загуглить, как остановить перебор массива, если успешно было найдено уже 3 поля с уcловием ACCEPT = 1;
fetch('https://sheetdb.io/api/v1/j0s93lmrv0uwi')
.then(response => response.json())
.then(data => {
let resp = data;
resp.forEach(function(item, i, arr) {
if(resp[i].ACCEPT == 1) {
for(let t = 0; t < 1; t++) { //вот тут начинаю тупить
console.log(resp[i].KEYWORDS);
}
}
});
return data;
})
.catch((err)=>console.log(err))
Сейчас выводятся все поля со значением поля ACCEPT = 1, а нужно только первые три из всего массива.
Спасибо за раннее.
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Если хотите через методы массива, можно так:
fetch('https://sheetdb.io/api/v1/j0s93lmrv0uwi')
.then(response => response.json())
.then(data => {
const three = data.filter(item => item.ACCEPT === "1").slice(0, 3);
console.log(three);
})
.catch((err)=>console.log(err))
Но при этом всё равно весь массив будет перебран и будет создана дополнительная большая структура данных. Чтобы остановиться воворемя, можно воспользоваться циклом. Например, так:
fetch('https://sheetdb.io/api/v1/j0s93lmrv0uwi')
.then(response => response.json())
.then(data => {
const three = [];
let i = 0;
while (i < data.length && three.length < 3) {
if (data[i].ACCEPT === "1") three.push(data[i]);
i++;
}
console.log(three);
})
.catch((err)=>console.log(err))