Al pasar una devolución de llamada para filtrar. El valor, el índice y el objeto Array se pasan a los parámetros de devolución de llamada, entonces, ¿cómo puedo crear una devolución de llamada de filtro reutilizable donde puedo pasar cualquier tipo de animal y filtrar en consecuencia?
Miré ¿ Cómo paso un parámetro adicional a la función de devolución de llamada en el método Javascript .filter ()? pero no pude hacer que funcionara según lo previsto
let animals = [
{ name: "fiddo", type: "dog" },
{ name: "garfield", type: "cat" },
{ name: "diddi", type: "bird" },
{ name: "bob", type: "cat" },
];
Esto es lo que quiero hacer, sé que no es posible, pero ¿cómo podría lograr algo "similar"?
function filterAnyAnimal(animal, index, arr, typeVariable) {
if (animal.type === typeVariable) {
return true;
}
return false;
}
console.log(animals.filter(filterAnyAnimal));
¿Realmente tengo que hacer esto? o hay una manera de pasar una variable?
function isDog(animal) {
if (animal.type === "dog") {
return true;
}
return false;
}
Como dijo el comentario de felix-kling y su respuesta ya, podrías hacer:
let animals = [
{ name: "fiddo", type: "dog" },
{ name: "garfield", type: "cat" },
{ name: "diddi", type: "bird" },
{ name: "bob", type: "cat" },
];
function filterAnyAnimal(typeVariable, animalType) {
if (animalType === typeVariable) {
return true;
}
return false;
}
let wordToFilter = 'cat';
console.log(animals.filter(function(element){
return filterAnyAnimal(element.type, wordToFilter);
}));
let animals = [
{ name: "fiddo", type: "dog" },
{ name: "garfield", type: "cat" },
{ name: "diddi", type: "bird" },
{ name: "bob", type: "cat" },
];
const result = animals.map(animal=>animal.type==="dog"?true:false);
console.log(result);
La función de mapa puede darle el resultado deseado