Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estou com uma dúvida sobre o método filter

var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];

/**
 * Array filters items based on search criteria (query)
 */
function filterItems(query) {
  return fruits.filter(function(el) {
      return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}

console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']

Estudando um pouco sobre esse método, eu me deparei com o seguinte código que está localizado no MDN voltado para JS. Primeiramente nós temos o seguinte array com algumas frutas. Logo abaixo, o código mostra uma função que nos permitirá passar certos valores em string e posteriormente serão filtrados. O que me confundiu foi o segundo return, que me diz que irá retornar o parâmetro el em minúsculo e através dele eu já acesso o método indexOf, o qual me permite localizar valores em um array. Não entendi muito bem pq isso deve ser maior que -1 e quando eu tiro o -1, o código me retorna todos os valores exceto o desejado.

cars = ['bmw', 'polo', 'palio', 'siena', 'camaro']

function search(nameQuery) {
    return cars.filter(function(item) {
        return item.toLowerCase().indexOf(nameQuery.toLowerCase());
    })
}

console.log(search('bm'));

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAo meu ver, o valor retornado da minha função indexOf deve ser maior que -1, pois o -1 é um índice inexistente nos elementos do meu array, mas eu não entendi pq não funciona sem essa questão de ser maior do que ele. Agradeço se alguém puder me ajudar!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

A função filter deve receber como parâmetro uma outra função que retorna um valor booleano. Se o retorno for true, o item é removido do array.

Quando o retorno da função indexOf é igual a -1, significa que nenhum elemento que tenha as características que você procura foi encontrado. O que essa comparação faz é verificar se um elemento foi encontrado e retornar um valor booleano pra função filter poder remover ou não o elemento do array.

Espero ter ajudado!