groupBy

const groupBy = (arr, key) =>
  arr.reduce((acc, i) => {
    (acc[i[key]] = acc[i[key]] || [] ).push(i);
    return acc;
  }, {});

const data = [
    {
        nom: "coka",
        cat: "Boisson",
        prix: 0.4,
    },
    {
        nom: "carotte",
        cat: "Legume",
        prix: 9,
    },
    {
        nom: "farine",
        cat: "Epicerie",
        prix: 4,
    },
    {
        nom: "cafe",
        cat: "Petit-dej",
        prix: 4,
    },
    {
        nom: "jus de fruit",
        cat: "Boisson",
        prix: 2,
    },
    {
        nom: "choux",
        cat: "Legume",
        prix: 4.3,
    },
    {
        nom: "olives",
        cat: "Epicerie",
        prix: 60,
    },
    {
        nom: "veau",
        cat: "Boucherie",
        prix: 40,
    },
    {
        nom: "poireau",
        cat: "Legume",
        prix: 2,
    }
];


let z = groupBy(data,"cat"); 


pythontutor

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


 

fetch GitHub fils

 <!DOCTYPE html>

<html lang="en">

<head>
</head>

<body>
    <script>
        const urlTest = 'https://raw.githubusercontent.com/dupontdenis/revision/master/test.json'

        const load = async () => {
            try {
                const response = await fetch(urlTest);
                const data = await response.json();
                //return or directly insertToDOM
                return data;
            } catch (error) {
                console.log(`file?: ${error}`)
            }
        }
        load().then(({ products }) => {
            products.forEach(({ Name, Price }) =>
                document
                    .body
                    .insertAdjacentHTML('afterbegin', `<p> ${Name}: ${Price} </p>`))
        });

    </script>
</body>

</html>

Async wait Promise

<!DOCTYPE html>
<html lang="en">
<body>
    <script>
        function sleep(ms) {
            return new Promise(resolve => setTimeout(resolve, ms));
        }
        const annoncement = async () => {
            document.body.insertAdjacentHTML("afterBegin"
, `<h1 id="info">date: ${new Date().toLocaleDateString()}</h1>`);
            await sleep(3000)
            document.querySelector("#info").remove();
        }
        annoncement();
    </script>
</body>

</html> 

delete

     const titi = "TITI";

    const body = {"toto":"TOTO",titi,"_id":"23"}
    delete body._id;
    const thing = {...body};
   
    console.log(thing)

PS C:\Users\denis.dupont\OneDrive - Universite Evry Val d'Essonne\Bureau\testgenerateur> node .\test.js { toto: 'TOTO', titi: 'TITI' }