Как вывести первые 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))

→ Ссылка