ddimonn8080
@ddimonn8080

Почему .filter() возвращает true а элемент в результат не попадает?

Здравствуйте
Функция три раза возвращает true, но при этом в результат попадает только два элемента.
В чем моя ошибка?

const products = [
  {id: 1},{id: 2},{id: 3},{id: 4},{id: 5},{id: 6},{id: 7},{id: 8},{id: 9},{id: 10},{id: 11},{id: 12},
];

const getPaginatadProducts = (products, page) => {
      const per_page = 3;
      const pages = products.length / per_page;
      const current_page = page;
      const start_offset = (current_page - 1) * per_page;
      let start_count = 0;

      const result = products.filter((item, index) => {

        console.log( 'index', index );
        console.log( 'start_count', start_count );
        console.log( 'index >= start_offset && start_count < per_page', (index >= start_offset && start_count < per_page) );
        console.log( '/////////////////////////////////////' );

        start_count++;

        return (index >= start_offset && start_count < per_page);
      });

      console.log( 'result - ', result );
}

getPaginatadProducts(products, 1);


Ссылка на codepen.io

Спасибо.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
В чем моя ошибка?

Вы изобретаете Array.slice:
function getPaginatedProducts(products, page) {
    const productsPerPage = 3;
    const begin = page * productsPerPage;
    const end = begin + productsPerPage;
    
    return products.slice(begin, end);
}

console.log(getPaginatedProducts(products, 0)); // 1,2,3
console.log(getPaginatedProducts(products, 1)); // 4,5,6
console.log(getPaginatedProducts(products, 2)); // 7,8,9
Ответ написан
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Нет, возвращает true она только два раза, т.к. условие
start_count < per_page
выполняется 2 раза, т.к. per_page = 3, а start_count увеличивается с каждой итерацией.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы