Prenons l’exemple d’un tableau contenant des renseignements sur des animaux :
var animaux = [
{nom: "Jeannot", espece: "lapin"},
{nom: "Rantanplan", espece: "chien"},
{nom: "Milou", espece: "chien"},
{nom: "Nemo", espece: "poisson"},
{nom: "Duchesse", espece: "chat"},
{nom: "Samy", espece: "poisson"}
];
Le problème : Extraire les renseignements contenus dans ce tableau mais uniquement pour les chiens.
Solution 1 : En utilisant la programmation impérative :
var chiens = [];
for (var i = 0; i < animaux.length; i += 1) {
if (animaux[i].espece === "chien") {
chiens.push(animaux[i]);
}
}
console.log(chiens);
// Résultat :
// [ { nom: 'Rantanplan', espece: 'chien' },
// { nom: 'Milou', espece: 'chien' } ]
Solution 2 : En utilisant la programmation fonctionnelle :
var estUnChien = function (animal) {
return animal.espece === "chien";
};
var chiens = animaux.filter(estUnChien);
console.log(chiens);
// Résultat :
// [ { nom: 'Rantanplan', espece: 'chien' },
// { nom: 'Milou', espece: 'chien' } ]
Et encore plus redoutable avec l’avènement de ECMAScript 2015 :
const animaux = [
{nom: "Jeannot", espece: "lapin"},
{nom: "Rantamplan", espece: "chien"},
{nom: "Milou", espece: "chien"},
{nom: "Nemo", espece: "poisson"},
{nom: "Duchesse", espece: "chat"},
{nom: "Samy", espece: "poisson"}
]
const estUnChien = animal => animal.espece === "chien"
const chiens = animaux.filter(estUnChien)
console.log(chiens)
// Résultat :
// [ { nom: 'Rantamplan', espece: 'chien' },
// { nom: 'Milou', espece: 'chien' } ]