Pages

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

Retour sur les objets en JS

 🚀Les objets JS sont dynamiques : On peut ajouter, modifier, supprimer (delete) des clés à tout moment.

  1. const obj = {};  // obj est un objet vide.Il n’a aucune clé au départ.
  2. console.log(obj["a"]); // undefined

On crée la propriété dynamiquement

  1. obj.a = 42;
 🪛JavaScript ajoute automatiquement une nouvelle clé a dans l’objet, avec la valeur 42.

  1. obj["b"] = "hello";
 🪛JavaScript ajoute automatiquement une nouvelle clé b dans l’objet, avec la valeur "hello"


🥷🏼L'utilisation de [], permet d'écrire
  1. const key = "fruit";
  2. obj[key] = "Ananas"; 


Conséquence

✈️On peut ecrire : 

  1. if (!obj["a"]) {
  2.   obj["a"] = [];
  3. }
  4. obj["a"].push("Ananas");

les virus par première lettre

 const viruses = [

  "Ebola",
  "Marburg",
  "Hendra",
  "Nipah",
  "SARS",
  "MERS",
  "Zika",
  "Dengue",
  "Hantavirus",
  "Lassa",
  "Variola",
  "Rota",
  "Polio",
  "Rabies",
  "Influenza",
  "Hepatitis",
  "Norovirus",
  "Coronavirus",
  "Adenovirus",
  "Coxsackie",
  "Junin",
  "Machupo",
  "Sabia",
  "Guaranito",
  "CrimeanCongo",
  "RiftValley",
  "YellowFever",
  "WestNile",
  "Chikungunya",
  "HTLV",
  "HIV",
  "Bunyavirus",
  "Orthopoxvirus",
  "Lyssavirus",
  "Astrovirus",
  "Enterovirus",
  "Parechovirus",
  "Metapneumovirus",
  "Parainfluenza",
  "Measles",
  "Mumps",
  "Rubella",
  "Rotavirus",
  "Borna",
  "Tacaribe",
  "SeoulVirus",
  "SinNombre",
  "OmskHemorrhagic",
  "KyasanurForest",
];

const groupedByVirus = viruses.reduce((acc, virus) => {
  (acc[virus[0].toUpperCase()] ??= []).push(virus);
  return acc;
}, {});

console.log(groupedByVirus["M"]);
 ['Marburg', 'MERS', 'Machupo', 'Metapneumovirus', 'Measles', 'Mumps']