Aide au DS

 

DS : sujet 2020

 Exercice n1

Soit la classe BD :
class BD {
    constructor(villes) {
        this.villes = villes;
    }
    find(query, callback) {
        callback(-- ? -- )
    }
}

Création de trois villes :

villes = new BD([{ ville: "vincennes", h: 2 }
    , { ville: "paris", h: 2 }
    , { ville: "roubais", h: 1 }]);

Modifications : Les villes avec h=2 passe à h=30

villes.find({ h: 2 }, function (villes) {
    for (let ville of villes) {
        ville["h"] = 30;
    }
});

Modification :  La propriété capitale = true pour la ville de Paris

villes.find({ ville: "paris" }, function (villes) {
    for (let ville of villes) {
        ville["capitale"] = true;
    }
});

Résultat :

villes = [{ ville: "vincennes", "h": 30 }
    , { ville: "paris", "h": 30, "capitale": true }
    , { ville: "roubais", "h": 1 }]}


💢 Question : 

Compléter le code -- ? -- pour filtrer les arguments du callback.


Aide : for in permet de boucler sur les clefs d'un objet.

let obj = { a: 1, b: 2 };
for (let prop in obj) {
    console.log(`${prop} = ${obj[prop]}`); // a = 1 b = 2
}

Application WEB !

Objectifs

Transformer notre code en une application.
Découvrir la notion de module.

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

const t = [20, 12, 2, 12];
const [min, max] = t.reduce(([min, max], cur) => {

    if (min > cur) min = cur;
    if (max < cur) max = cur;

    return [min, max];

}, [Number.MAX_VALUE, Number.MIN_VALUE]);


//tableau de pers

const etudiants = [
    { nom: "superA", note: 20 },
    { nom: "superB", note: 12 },
    { nom: "superC", note: 2 },
    { nom: "superD", note: 12 },
];

//retourne un tableau de valeurs

const [minE, maxE] = etudiants.reduce(([min, max], { note }) => {

    if (min > note) min = note;
    if (max < note) max = note;

    return [min, max];

}, [Number.MAX_VALUE, Number.MIN_VALUE]);


//retourne un tableau de pointeurs

const [dernier, major] = etudiants.reduce(([dernier, premier], etudiant) => {

    if (dernier.note > etudiant.note) dernier = etudiant;
    if (premier.note < etudiant.note) premier = etudiant;

    return [dernier, premier];

}, [etudiants[0], etudiants[0]]);



//retourne un objet

const { dernier, major } = etudiants.reduce(({ dernier, major }, etudiant) => {

    if (dernier.note > etudiant.note) dernier = etudiant;
    if (major.note < etudiant.note) major = etudiant;

    return { dernier, major };

}, { dernier: etudiants[0], major: etudiants[0] });


Un petit tour et puis ...

Méthodes Array

Méthodes sur les tableaux


Suite à vos interrogations sur la méthode sort , je vous ai rédigé quelques approfondissements : lien

Entrainement

 


Soit la BD suivante ( code ) 

const COMPAGNIES = [
    {
        name: "DUPONTco",
        ranges: [66864, 66928],
    },
    {
        name: "HAL",
        ranges: [7800, 65952, 200000],
    },
    {
        name: "GOUGLE",
        ranges: [7936, 65952, 119290],
    },
    {
        name: "YOUTOUBE",
        ranges: [65856, 119000, 200000],
    },
    {
        name: "ECRY",
        ranges: [126000,125264, 127000,125278, 126100],
    }   
]

Trouver les compagnies qui ont au moins un salaire au dessus de 120000 €.

Trouver les compagnies qui ont tous leur salaire au dessus de 120000 €.