Avancé ! map, reduce
const languageSkills = [
Algo : comparaisons
let tab = [1, 2, 3, -1, 6, 6, 1, 2, 2, 1];
[ 1, 1, 1, -1, 6, 6, 2, 2, 2, 3 ]
map
const courses = [
{ name: "HTML", levels: ["L1", "L2"] },
{ name: "CSS", levels: ["L1", "L2"] },
{ name: "JS", levels: ["L2", "L3", "M1"] }
]
const levels = new Set(courses.reduce((acc, { levels: levels }) => ([...acc, ...levels]), []));
const programme = courses.reduce((a, { levels: levels, name }) => {
for (let level of levels) {
if (!a[level]) a[level] = [];
a[level].push(name);
}
return a;
}, {});
const menu = Object.entries(programme).map(([level, courses]) => {
return {
title: level,
subnav: courses.map((course) => {
return { title: course }
})
}
})
console.dir(JSON.stringify(menu));
this = un paramétre !
This doit être vu comme un paramétre.
This permet d'économiser du code en mémoire.
Exemple de code
- let user = { name: "John", f: say };
- let admin = { name: "Admin", f: say };
- function say(what="Hi") {
- console.log(`${what} ${this.name}`);
- }
- // these calls have different this
- // "this" inside the function is the object "before the dot"
- user.f("Hello"); // John (this == user)
- admin.f("Please"); // Admin (this == admin)
- admin['f']();
Erreur classique.
like aggregation
Voici à quoi ressemble l'aggregation dans une base de données !
const products = [
const groupBy = (arr, key) =>