Test de Révisions
reduce |
Object.entries |
Vous disposez d'un tableau d'articles. un article = {nom: String, cat: String, prix: Number}
data = [
{nom: 'coka', cat: 'Boisson', prix: 4}
{nom: 'farine', cat: 'Epicerie', prix: 4}
{nom: 'carotte', cat: 'Legume', prix: 9}
{nom: 'cafe', cat: 'Petit-dej', prix: 4}
{nom: 'jus de fruit', cat: 'Boisson', prix: 2}
{nom: 'choux', cat: 'Legume', prix: 2}
{nom: 'olives', cat: 'Epicerie', prix: 60}
{nom: 'veau', cat: 'Boucherie', prix: 40}
{nom: 'poireau', cat: 'Legume', prix: 2}
];
Donner
Le nombre d'articles.
Ajouter un attribut facture sous la forme prix.toLocaleString("fr-FR", { style: "currency", currency: "EUR" } pour chaque article
{ nom: 'carotte', cat: 'Legume', prix: 9, facture: '9,00 €' },
Afficher le tableau par ordre alpha des articles.
Les articles d'une "cat" donnée.
[
{ nom: 'carotte', cat: 'Legume', prix: 9, facture: '9,00 €' },
{ nom: 'choux', cat: 'Legume', prix: 2, facture: '2,00 €' },
{ nom: 'poireau', cat: 'Legume', prix: 2, facture: '2,00 €' }
]
Le coût du panier (total achat).
127
L'ensemble des "cat".
[ 'Petit-dej', 'Legume', 'Boisson', 'Epicerie', 'Boucherie' ]
Un objet donnant par "cat" le nombre d'articles.
{ 'Petit-dej': 1, Legume: 3, Boisson: 2, Epicerie: 2, Boucherie: 1 }
La "cat" qui a le plus d'articles.
{Legume: 3}
Un objet ou tableau donnant par "cat" un tableau d'articles.
[
'Petit-dej': [ 'cafe' ],
Legume: [ 'carotte', 'choux', 'poireau' ],
Boisson: [ 'coka', 'jus de fruit' ],
Epicerie: [ 'farine', 'olives' ],
Boucherie: [ 'veau' ]
]
Un objet donnant par "cat" un tableau des prix des articles.
[
'Petit-dej': [ 4 ],
Legume: [ 9, 2, 2 ],
Boisson: [ 4, 2 ],
Epicerie: [ 4, 60 ],
Boucherie: [ 40 ]
]
Un tableau d'objet avec par cat le total des prix des articles
[{"categorie":"Petit-dej","total":4}
,{"categorie":"Legume","total":15.3}
,{"categorie":"Boisson","total":2.4}
,{"categorie":"Epicerie","total":64}
,{"categorie":"Boucherie","total":40}]
Donner le coût du panier à partir du tableau précédent.
127
Préparation examen !
Modifier le code : https://github.com/dupontdenis/fetch.git
H. Miyazakis's Films
- The Red Turtle : Michaël Dudok de Wit
- When Marnie Was There : Hiromasa Yonebayashi
- The Tale of the Princess Kaguya : Isao Takahata
- The Wind Rises : Hayao Miyazaki
- From Up on Poppy Hill : Gorō Miyazaki
- Arrietty : Hiromasa Yonebayashi
- Ponyo : Hayao Miyazaki
- Tales from Earthsea : Gorō Miyazaki
- Howl's Moving Castle : Hayao Miyazaki
- The Cat Returns : Hiroyuki Morita
- Spirited Away : Hayao Miyazaki
- My Neighbors the Yamadas : Isao Takahata
- Princess Mononoke : Hayao Miyazaki
- Whisper of the Heart : Yoshifumi Kondō
- Pom Poko : Isao Takahata
- Porco Rosso : Hayao Miyazaki
- Only Yesterday : Isao Takahata
- Kiki's Delivery Service : Hayao Miyazaki
- My Neighbor Totoro : Hayao Miyazaki
- Grave of the Fireflies : Isao Takahata
- Castle in the Sky : Hayao Miyazaki
Directors
- Michaël Dudok de Wit
- Yoshifumi Kondō
- Gorō Miyazaki
- Hayao Miyazaki
- Hiroyuki Morita
- Isao Takahata
- Hiromasa Yonebayashi
H. Miyazakis's Films
- The Red Turtle : Michaël Dudok de Wit
- When Marnie Was There : Hiromasa Yonebayashi
- The Tale of the Princess Kaguya : Isao Takahata
- The Wind Rises : Hayao Miyazaki
- From Up on Poppy Hill : Gorō Miyazaki
- Arrietty : Hiromasa Yonebayashi
- Ponyo : Hayao Miyazaki
- Tales from Earthsea : Gorō Miyazaki
- Howl's Moving Castle : Hayao Miyazaki
- The Cat Returns : Hiroyuki Morita
- Spirited Away : Hayao Miyazaki
- My Neighbors the Yamadas : Isao Takahata
- Princess Mononoke : Hayao Miyazaki
- Whisper of the Heart : Yoshifumi Kondō
- Pom Poko : Isao Takahata
- Porco Rosso : Hayao Miyazaki
- Only Yesterday : Isao Takahata
- Kiki's Delivery Service : Hayao Miyazaki
- My Neighbor Totoro : Hayao Miyazaki
- Grave of the Fireflies : Isao Takahata
- Castle in the Sky : Hayao Miyazaki
Directors
- Michaël Dudok de Wit
- Yoshifumi Kondō
- Gorō Miyazaki
- Hayao Miyazaki
- Hiroyuki Morita
- Isao Takahata
- Hiromasa Yonebayashi
Films By Director
- Michaël Dudok de Wit
- The Red Turtle
- Hiromasa Yonebayashi
- When Marnie Was There
- Arrietty
- Gorō Miyazaki
- From Up on Poppy Hill
- Tales from Earthsea
- Hiroyuki Morita
- The Cat Returns
- Yoshifumi Kondō
- Whisper of the Heart
- Isao Takahata
- The Tale of the Princess Kaguya
- My Neighbors the Yamadas
- Pom Poko
- Only Yesterday
- Grave of the Fireflies
- Hayao Miyazaki
- The Wind Rises
- Ponyo
- Howl's Moving Castle
- Spirited Away
- Princess Mononoke
- Porco Rosso
- Kiki's Delivery Service
- My Neighbor Totoro
- Castle in the Sky
Application :
Aide au DS
DS : sujet 2020
Exercice n1
Création de trois villes :
Modifications : Les villes avec h=2 passe à h=30
Modification : La propriété capitale = true pour la ville de Paris
Résultat :
💢 Question :
Compléter le code -- ? -- pour filtrer les arguments du callback.
Aide : for in permet de boucler sur les clefs d'un objet.
Application WEB !
Objectifs
Définir la fonction createArray
/**
*
* @param {number} start The start of the createTab.
* @param {number} end The end of the createTab.
* @param {number} step The value to increment or decrement by.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Array} Returns the createTab of numbers.
*/
createTab(10,20) = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
createTab&(0,9,3) = [ 0, 3, 6 ]
createTab(0,9,3,true) = [ 6, 3, 0 ]
Transformer notre code en une application : http://localhost:3000/
TD min/max
// pour un tableau simple
//tableau de pers
//retourne un tableau de valeurs
//retourne un tableau de pointeurs
//retourne un objet
Méthodes Array
Méthodes sur les tableaux
Entrainement
Soit la BD suivante ( code )
Some
some
La méthode
some()
teste si au moins un élément du tableau passe le test implémenté par la fonction fournie. Elle renvoie un booléen indiquant le résultat du test.- const T = [41, 23, 65, 43, 57],
- test = (element) => element % 2;
- console.log(t.some(test));
Modifier le code précédent, sans utiliser la négation, pour tester si un élément du tableau est pair.
Donner le code de la fonction some qui teste si au moins un élément du tableau vérifie la fonction test.
- const T = [41, 23, 65, 43, 57];
- test = (element) => element % 2;
- console.log(some(T,test));
Pourrait on appliquer de telle fonction à des tableaux de vidéos ?
Problème
const Pizzas = [
{ name:"queen", w: ["🐷","🍄","🍅","🧀"] },
{ name: "cheese", w: ["🧀", "🍅"]},
{ name: "oriental", w: ["🍅","🐑","🍄","🌶"]},
{ name: "royal", w: ["🍅","🌵"]},
],
price = new Map([ ["🍅", 1], ["🐷", 2], ["🌶",2], ["🍄", 5], ["🧀", 5], ["🐑", 2], ["🌵", 10]]);
a) Donner l'ensemble des ingrédients |
Donner pour chaque ingrédient le nombre de pizzas |
Ajouter le prix pour chaque pizza | [[object Object] { name: "queen", price: 13, w: ["🐷", "🍄", "🍅", "🧀"] }, ... }] |
Trouver si une pizza a de la salade "🥗"
Trouver si une pizza a du "🌵"
Donner le code pour savoir si une pizza est végétarienne ("🐷", "🐑")
Je suis végétarien, je filtre mes ingrédients !
PLUS JAMAIS de boucles
forEach
- function forEach(t, fx) {
- for (let i = 0; i < t.length; i++) {
- fx(t[i])
- }
- }
trans
- function trans(t, fx) {
- const tmp = [];
- for (let i = 0; i < t.length; i++) {
- tmp[i] = fx(t[i])
- }
- return tmp;
- }
filter
- function filter(t, fx) {
- const tmp = [];
- for (let i = 0; i < t.length; i++) {
- if (fx(t[i])) {
- tmp.push(t[i]);
- }
- }
- return tmp;
- }
En action :
💥lien
Boucles
Discussion autour des boucles
Amélioration du code
La structuration de valeurs dans un tableau, nécessite une boucle pour réaliser un parcours des valeurs.Exemple :
Affichons simplement les éléments d'un tableau :- let array = [1, 2, 3];
- for (let i = 0; i < array.length; i++) {
- let current = array[i];
- console.log(current); // affichage
- }
- for (let i = 0; i < array.length; i++) {
- let current = array[i];
- actionAffichage(current); // affichage
- }
Affichage des positifs
Pour afficher les valeurs positives, il est facile de créer une condition ; la fonction précédente devient.- for (let i = 0; i < array.length; i++) {
- let current = array[i];
- if (current>0) actionAffichage(current);
- }
ou
- for (let i = 0; i < array.length; i++) {
- let current = array[i];
- actionAffichagePositif(current);
- }
Affichage des Négatifs
Pour afficher les valeurs négatives, il est facile de créer une condition ; la fonction précédente devient.- for (let i = 0; i < array.length; i++) {
- let current = array[i];
- actionAffichageNégatif(current);
- }
Bilans
Pour chaque type d'affichage, il est nécessaire de redéfinir la boucle.
Améliorations
Nous allons encapsuler le code de la boucle dans une fonction forEach. 👿
Il nous reste à réfléchir sur le passage des actions (positif, négatif ...)
comme paramètres.
Ainsi, "afficher quelque chose" peut être vu comme une fonction.
Les fonctions étant des variables et comme les variables peuvent être passées en paramètres, on peut passer "afficher quelque chose" à une fonction.
Ainsi, la fonction "afficher quelque chose" sera passée en paramètre à la fonction forEach.
Les fonctions étant des variables et comme les variables peuvent être passées en paramètres, on peut passer "afficher quelque chose" à une fonction.
Ainsi, la fonction "afficher quelque chose" sera passée en paramètre à la fonction forEach.
Résumé des codes
Affichage
function affVal(v){ console.log(`val tab : ${v}`) }
Affichage Positif
function AffPositif(v){ if (v>0) console.log(` val positif : ${v} `); }
Boucle sur le tableau
function forEach(array, fx) { for (var i = 0; i < array.length; i++)//for of fx(array[i]); }
Appel
forEach(T, AffPositif);
Appel anonyme
forEach(T, function (v){ console.log(`-> tab : ${v}`);});
En Action
Affichage | function affVal(v){ console.log(`val tab : ${v}`) } |
Affichage Positif | function AffPositif(v){ if (v>0) console.log(` val positif : ${v} `); } |
Boucle sur le tableau | function forEach(array, fx) { for (var i = 0; i < array.length; i++)//for of fx(array[i]); } |
Appel | forEach(T, AffPositif); |
Appel anonyme | forEach(T, function (v){ console.log(`-> tab : ${v}`); }); |
En Action