Фильтровать массив, содержащий список статей в качестве объектов - PullRequest
0 голосов
/ 16 октября 2019

У меня есть массив, содержащий 7 объектов, все статьи. Мне нужно иметь возможность показывать только первые 3 статьи

const myArray = [
   {
      id: "article_1",
      type: "articles"
   },
{
      id: "article_2",
      type: "articles"
   },
{
      id: "article_3",
      type: "articles"
   },
{
      id: "article_4",
      type: "articles"
   },
{
      id: "article_5",
      type: "articles"
   },
{
      id: "article_6",
      type: "articles"
   },
{
      id: "article_7",
      type: "articles"
   }
]

const filteredArticles = myArray.filter(article => myArray.length > 3)

console.log(filteredArticles)

К сожалению, он возвращает пустой массив вместо массива со статьями.

Я знаю, что решением может быть использование if (myArray.length> 3) {// показать только индекс 0, 1, 2, 3} else {// бла-бла}

Но я пытаюсь использовать js .filter, который должен легко скрывать количество статей свыше 3.

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Попробуйте

myArray.filter((_,i) => i < 3)

const myArray = [
   {
      id: "article_1",
      type: "articles"
   },
{
      id: "article_2",
      type: "articles"
   },
{
      id: "article_3",
      type: "articles"
   },
{
      id: "article_4",
      type: "articles"
   },
{
      id: "article_5",
      type: "articles"
   },
{
      id: "article_6",
      type: "articles"
   },
{
      id: "article_7",
      type: "articles"
   }
]

const filteredArticles = myArray.filter((_,i) => i < 3);

console.log(filteredArticles);
1 голос
/ 16 октября 2019

Вторым аргументом обратного вызова, переданного фильтру, является текущий индекс. Таким образом, вы можете сделать что-то вроде:

const filteredArticles = myArray.filter((article, i) => {
    return i < 3;
});

Это будет правдой только для первых трех элементов, поэтому фильтрованный массив будет первыми тремя. Имейте в виду, что фильтр все равно будет проверять оставшуюся часть массива, так что может быть более эффективный способ сделать это.

РЕДАКТИРОВАТЬ: Как упоминают некоторые комментаторы, .slice будет лучшим способом сделать этопоскольку вам не нужно итерировать по остальной части массива, как в решении с фильтром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...