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'));
Ao 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!