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 : Transformer ce tableau d’objets en un tableau synthétisant chaque objet dans une chaîne de caractère.
Solution 1 : En utilisant la programmation impérative :
var phrases = [];
for (var i = 0; i < animaux.length; i += 1) {
phrases.push(animaux[i].nom + " est un " + animaux[i].espece + ".");
}
console.log(phrases);
// Résultat :
// [ 'Jeannot est un lapin.',
// 'Rantamplan est un chien.',
// 'Milou est un chien.',
// 'Nemo est un poisson.',
// 'Duchesse est un chat.',
// 'Samy est un poisson.' ]
Solution 2 : En utilisant la programmation fonctionnelle :
var creerPhrase = function (animal) {
return animal.nom + " est un " + animal.espece + ".";
};
var phrases = animaux.map(creerPhrase);
console.log(phrases);
// Résultat :
// [ 'Jeannot est un lapin.',
// 'Rantamplan est un chien.',
// 'Milou est un chien.',
// 'Nemo est un poisson.',
// 'Duchesse est un chat.',
// 'Samy est un poisson.' ]
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 creerPhrase = o => o.nom + " est un " + o.espece + "."
const phrases = animaux.map(creerPhrase)
console.log(phrases)
// Résultat :
// [ 'Jeannot est un lapin.',
// 'Rantamplan est un chien.',
// 'Milou est un chien.',
// 'Nemo est un poisson.',
// 'Duchesse est un chat.',
// 'Samy est un poisson.' ]