Как ограничить итерацию стрелочной функции 10 данными? - PullRequest
1 голос
/ 16 июня 2020

Как искать только по 10 данным?

  const filterCategory = (category) => {
    return results.filter(
      result => {
      return result.category === category;
      })
  }

Ответы [ 4 ]

6 голосов
/ 16 июня 2020

Вы можете использовать метод slice() в массиве results, чтобы получить только первые 10 элементов, а затем вы можете фильтровать только их, например:

const filterCategory = (category) => {
  return results.slice(0, 10).filter(result => {
    return result.category === category;
  })
}
2 голосов
/ 16 июня 2020

Второй аргумент обратного вызова фильтра - index.

const filterCategory = (category) => {
  return results.filter(
    (result, index) => {
      if (index >= 10) {
        return false;
      }
      return result.category === category;
    })
  }
}

Документация Mozilla - отличный ресурс. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

1 голос
/ 16 июня 2020

Это можно упростить с помощью тернарного оператора

const filterCategory = (category) => {
  return results.filter(
    (result, index) => {
        return index >= 10 ? false : (result.category === category);
    })
  }
}
0 голосов
/ 16 июня 2020

Если вы хотите получить только десять элементов в результате, вы можете выполнить итерацию с Array#some и использовать короткое замыкание с новой длиной фильтруемого массива.

const
    filterCategory = (category) => {
        const filtered = [];
        results.some(o => o.category === category && filtered.push(o) === 10);
        return filtered;
    };
...