Skip to content

Instantly share code, notes, and snippets.

@rcarlier
Last active January 13, 2023 09:29
Show Gist options
  • Save rcarlier/876b6912220c63191ac7ff7d55abec08 to your computer and use it in GitHub Desktop.
Save rcarlier/876b6912220c63191ac7ff7d55abec08 to your computer and use it in GitHub Desktop.
/*
O Captain! My Captain!
J'ai demandé à Chat GPT
Comment en JavaScript affiche tous les éléments d'un tableau nommé
"captains" de plusieurs façons différentes ?
De temps en temps, j'ai demandé
Donne m'en d'autre
Et un peu forcé la main pour la récursion et la fonction generator
Dans le code ci dessous, je n'ai modifié que les noms des variables
ou fonctions pour éviter les messages du genre
Identifier 'i' has already been declared
*/
const captains = ["America", "Haddock"];
let i;
console.log(`\n\n1 - Utilisation de la boucle "for":`);
for (i = 0; i < captains.length; i++) {
console.log(captains[i]);
}
console.log(`\n\n2 - Utilisation de la boucle "for...of":`);
for (const captain of captains) {
console.log(captain);
}
console.log(`\n\n3 - Utilisation de la méthode "forEach":`);
captains.forEach(function (captain) {
console.log(captain);
});
console.log(`\n\n4 - Utilisation de la méthode "forEach" avec une fonction fléchée:`);
captains.forEach((captain) => console.log(captain));
console.log(`\n\n5 - Utilisation de la méthode "map":`);
captains.map(function (captain) {
console.log(captain);
});
console.log(`\n\n6 - Utilisation de la méthode "map" avec une fonction fléchée:`);
captains.map((captain) => console.log(captain));
console.log(`\n\n7 - Utilisation de la méthode "reduce":`);
captains.reduce(function (acc, captain) {
console.log(captain);
return acc;
}, []);
console.log(`\n\n8 - Utilisation de la boucle "while":`);
i = 0;
while (i < captains.length) {
console.log(captains[i]);
i++;
}
console.log(`\n\n9 - Utilisation de la boucle "do...while":`);
i = 0;
do {
console.log(captains[i]);
i++;
} while (i < captains.length);
console.log(`\n\n10 - Utilisation de la méthode "slice":`);
i = 0;
let captain;
while ((captain = captains.slice(i, ++i)[0])) {
console.log(captain);
}
console.log(`\n\n11 - Utilisation de la méthode "for...in": `);
for (i in captains) {
console.log(captains[i]);
}
console.log(`\n\n12 - Utilisation de la méthode "entries()" et la boucle "for...of": `);
for (const [index, captain] of captains.entries()) {
console.log(`\n\nCaptain ${index + 1}: ${captain}`);
}
console.log(`\n\n13 - Utilisation de la méthode "keys()" et la boucle "for...of": `);
for (const index of captains.keys()) {
console.log(captains[index]);
}
console.log(`\n\n14 - Utilisation de la méthode "values()" et la boucle "for...of": `);
for (const captain of captains.values()) {
console.log(captain);
}
console.log(`\n\n15 - Utilisation de la méthode "some()": `);
captains.some(function (captain) {
console.log(captain);
});
console.log(`\n\n16 - Utilisation de la méthode "some()" avec une fonction fléchée: `);
captains.some((captain) => console.log(captain));
console.log(`\n\n17 - Utilisation de la méthode "every()": `);
captains.every(function (captain) {
console.log(captain);
}); // n'en donne qu'un seul
console.log(`\n\n18 - Utilisation de la méthode "every()" avec une fonction fléchée: `);
captains.every((captain) => console.log(captain)); // n'en donne qu'un seul
console.log(`\n\n19 - Utilisation de la méthode "filter()": `);
captains.filter(function (captain) {
console.log(captain);
});
console.log(`\n\n20 - Utilisation de la méthode "filter()" avec une fonction fléchée: `);
captains.filter((captain) => console.log(captain));
console.log(`\n\n21 - Utilisation de la fonction "forEach" avec un paramètre "index": `);
captains.forEach(function (captain, index) {
console.log(`Captain ${index + 1}: ${captain}`);
});
console.log(`\n\n22 - Utilisation de la méthode "join()": `);
console.log(captains.join(", "));
console.log(`\n\n23 - Utilisation de la méthode "toString()": `);
console.log(captains.toString());
console.log(`\n\n24 - Utilisation de l'opérateur spread: `);
console.log(...captains);
console.log(`\n\n25 - Utilisation de l'opérateur spread avec un tableau vide: `);
console.log([...captains]);
console.log(`\n\n26 - Utilisation de la fonction "Object.values()": `);
console.log(Object.values(captains));
console.log(`\n\n27 - Utilisation de la fonction "Object.entries()" et la boucle "for...of": `);
for (const [index, captain] of Object.entries(captains)) {
console.log(`Captain ${index + 1}: ${captain}`);
}
console.log(`\n\n28 - Utilisation de la fonction "Object.keys()" et la boucle "for...of": `);
for (const index of Object.keys(captains)) {
console.log(captains[index]);
}
console.log(`\n\n29 - Utilisation de la fonction "Object.getOwnPropertyNames()": `);
console.log(
Object.getOwnPropertyNames(captains).map(function (index) {
return captains[index];
})
);
console.log(`\n\n30 - Et en utilisant la récursion ?`);
function displayArrayRecursion(array, index = 0) {
if (index >= array.length) {
return;
}
console.log(array[index]);
displayArrayRecursion(array, index + 1);
}
displayArrayRecursion(captains);
console.log(`\n\n31 - Et en utilisant une fonction génératrice ?`);
function* displayArrayGenerator(array) {
for (i = 0; i < array.length; i++) {
yield array[i];
}
}
for (const element of displayArrayGenerator(captains)) {
console.log(element);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment