Pages

DS : 30minutes Mercredi P1

 Thème : Films, genres, notes, années

const films = [

  { titre: "Inception", genre: "SF", note: 9, annee: 2010 },

  { titre: "Titanic", genre: "Romance", note: 8, annee: 1997 },

  { titre: "Interstellar", genre: "SF", note: 10, annee: 2014 },

  { titre: "Amélie", genre: "Comédie", note: 7, annee: 2001 },

  { titre: "Avatar", genre: "SF", note: 7, annee: 2009 }

];


Extraire la liste des titres des films. 

Donner les films par genre

Vérifier si tous les films sont sortis après 1990

Trouver le film dont le titre est "Titanic"

Vérifier s’il existe au moins un film avec une note ≥ 9

Tester si la liste des genres contient "Comédie"

Sélectionner les films de genre SF

Calculer la somme des notes des films.


JavaScript ↔ Python

🍕JavaScript ↔ Python

Les principales opérations sur les collections : filter, map, reduce, groupBy, find, some, every et includes.

JavaScript

Python


JavaScript 

filter()

compréhension de liste

sélectionner

map()

compréhension de liste

transformer

reduce()

boucle for

accumuler

groupBy()

defaultdict + for

regrouper

find()

next() + générateur

trouver un élément

some()

any()

au moins un

every()

all()

tous

includes()

in

contient

1. filter()

// JavaScript
const parisiens = etudiants.filter(e => e.ville === "Paris");

// Python
parisiens = [
e for e in etudiants
if e["ville"] == "Paris"
]

2. map()

// JavaScript
const noms = etudiants.map(e => e.nom);

// Python
noms = [e["nom"] for e in etudiants]

3. reduce()

// JavaScript
const total = etudiants.reduce((acc, e) => {
return acc + e.age;
}, 0);
 

// Python

 total = 0

for e in etudiants:
total += e["age"]

4. groupBy()

// JavaScript
const groupes = Object.groupBy(
etudiants,
e => e.ville
);

// Python
from collections import defaultdict

groupes = defaultdict(list)

for e in etudiants:
    groupes[e["ville"]].append(e)

5. find()

// JavaScript
const etudiant = etudiants.find(
e => e.nom === "Alice"
);

// Python
etudiant = next(
(e for e in etudiants if e["nom"] == "Alice"),
None
)

6. some()

// JavaScript
const existe = etudiants.some(
e => e.ville === "Paris"
);

// Python
existe = any(
e["ville"] == "Paris"
for e in etudiants
)

7. every()

// JavaScript
const tousParisiens = etudiants.every(
e => e.ville === "Paris"
);

// Python
tous_parisiens = all(
e["ville"] == "Paris"
for e in etudiants
)

8. includes()

// JavaScript
const villes = ["Paris", "Lyon", "Marseille"];

villes.includes("Paris");

  // Python
villes = ["Paris", "Lyon", "Marseille"]

"Paris" in villes

Exemple complet : grouper les étudiants par ville

Données Python :

etudiants = [
{"nom": "Alice", "ville": "Paris"},
{"nom": "Bob", "ville": "Lyon"},
{"nom": "Chloé", "ville": "Paris"},
{"nom": "Alice", "ville": "Marseille"},
{"nom": "Bob", "ville": "Lyon"}
]

Équivalent du reduce JavaScript :

groupes = {}

for e in etudiants:
ville = e["ville"]

if ville not in groupes:
    groupes[ville] = []

groupes[ville].append(e)

🛟Mémo

·        filter() → [ ... for ... if ... ]

·        map() → [ ... for ... ]

·        reduce() → for + accumulateur

·        groupBy() → defaultdict + for

·        find() → next(...)

·        some() → any()

·        every() → all()

·        includes() → in



Remarque : en Python, filter(), map() et reduce() existent, mais les compréhensions de listes et les boucles for sont souvent plus naturelles pour apprendre ces opérations.


 

ficher → lien

GroupeBY

GroupeBy est si utile : → reduce⇆ groupeBy

?? nullish coalescing operator.

🚀 Comprendre ?? nullish coalescing operator. sert à donner une valeur par défaut uniquement si la valeur est null ou undefined. 


👉 Si la valeur n’est pas null ou undefined → on la garde.
👉 Si elle est null ou undefined → on prend la valeur de droite.

🪛Exemple : 
let x = null;
let y = x ?? 42;
console.log(y); // 42
 

🚀 Comprendre ??= L’opérateur nullish assignment :

x ??= valeur 

signifie :
👉Si x est null ou undefined, alors x = valeur.

🪛Exemple : 
(Object["A"] ??= []).push("Ananas");

la clé n’existe pas


const Object = {};

(Object["A"] ??= []).push("Ananas");


🔍 Déroulé

  1. Object["A"] vaut undefined

  2. undefined ??= [] → donc Object["A"] = []

  3. On fait .push("Ananas")

🎯 Résultat

{ A: ["Ananas"] }

la clé existe déjà


const Object = { A: ["Abricot"] };

(Object["A"] ??= []).push("Ananas");


🔍 Déroulé

  1. Object["A"] vaut ["Abricot"]

  2. Ce n’est ni null ni undefined → on ne réassigne pas

  3. On fait .push("Ananas")

🎯 Résultat

{ A: ["Abricot", "Ananas"] }


x ??= valeurx ??= valeur