1
resposta

Problemas Filtrando array em javascript

Estou desenvolvendo uma pequena aplicação em React e pega um array de um json e deve filtrar as noticias desta array.

Tenho uma função onde recebo uma array e uso o filter() para criar uma nova array.

Quando faço o filtro por equivalencia ( === ) o filtro funciona

Ex:

filterArticles(){
    const articles = this.state.articles; // array original
    let search = this.state.search;  // valor para efetuar o filtro
    //starting filter
    let filtered =  articles.filter(function (a) {
      return (a.author === search);
    });
  }

Mas quero o retorno seja verdadeiro mesmo quando o valor do search, isso é, o nome do autor, não esteja escrito por enteiro, tentei o seguinte código:

filterArticles(){
    const articles = this.state.articles; // array original
    let search = this.state.search;  // valor para efetuar o filtro
    //starting filter
    let filtered =  articles.filter(function (a) {
      return (author.includes(search));
    });
  }

E não funcionou.

Alguma ideia do que pode estar acontecendo?

1 resposta

Boa tarde, Leandro! Como vai?

O seu código está quase correto! Na realidade, o que vc deveria ter feito é:

let filtered =  articles.filter(function (a) {
      return (a.author.includes(search));
});

Só faltou vc lembrar que propriedade author está dentro do objeto a.

Obs.: Como forma de melhorar o seu código semanticamente, eu indicaria que vc trocasse o nome do parâmetro a para article.

Qualquer coisa é só falar!

Grande abraço e bons estudos!