Suma totala produse

Salutare,

Lucrez la un proiect si m-am blocat de tot la urmatorul lucru:
Vreau sa imi afiseze suma totala a produselor in cos.
Am reusit sa fac sa imi arate detaliile despre produse dar nu si suma totala.

Daca ma poate ajuta cineva as fi foarte recunoscator.
O sa las si un link catre fisier.

Totalul la tine e curso.price * curso.amount, dar vezi ca price trebuie sa fie un obiect cu valoarea care va fi numar si currency care va fi string. Mai poti rupe in 2 price-ul cu string.split(’ ') si sa folosesti prima parte ca si number, dar e mai urat.

Dupa iei fiecare total (care poate fi un obiect sau numar) si faci un total ori cu array.reduce ori cu un for.

2 Likes

Incerca sa centralizezi toate informatiile intr-un singur loc, si aici ma refer la un obiect ( state ), pe care il poti folosi si la eventuala interactiune cu partea de back-end. Acolo poti stoca cosul de cumparaturi, poti stoca o lista de produse favoruite/salvate, un istoric al produselor vizitate si chestii similare. Apoi faci niste functii frumusele prin care interactionezi cu acest obiect, unde stochezi tu toate datele respective, astfel incat sa eviti modificarea directa a datelor, fapt ce poate duce la tot felul de probleme.

2 Likes

Ai puteam sa imi lasi un exemplu ca sa il am si pe parcurs plus ca sa inteleg mai bine.


            <td>${curso.price}</td>
            <td>${curso.amount}</td>
            <th>${curso.total}</th>
            <td><a href="#" class="deletebtn" data-id="${curso.id}">X</a></td>

Aici ai tot ce este nevoie.

Pentru produsul de mai jos


o sa ai curso.amount * curso.price

Si pentru pretul total, poti sa iterezi prin coloana de total, sa iei preturile de acolo si sa le aduni

Bafta!

1 Like

tot nu reusesc :smiling_face_with_tear:

Nu poti calcula deoarece “price” il ai adaugat asa "price": "Pret: 1300 lei"
ca sa poti calcula trebuie sa ai “price”: Number(1330), am pus (Number() pentru ca tip-ul pretului trebuie sa fie numar ca sa-l poti calcula).
in cod in loc de <td>${curso.price}</td> poti face Pret: <td>${curso.price}</td> lei ca sa nu mai fi nevoit sa adaugi acest cod manual.

Deci valoarea lui price trebuie sa fie 1300 ca numar sau daca vrei poate sa fie “1300” (string dar doar numere dar dupa trebuie sa-l adauci in Number() ca sa fie transformat in numar). Dar cel mai ok adauga-l direct ca numar, eg. {price: 1300}.

Dupa ce ai facut asta si ai pretul afisat corect articleShop.map(item => item.price).reduce((prev, current) => prev + current, 0)

ca sa intelegi, prima bucata articleShop.map(item => item.price) iti va returna un array cu toate preturile adaugate in cos.

Array.reduce((prev, current) => prev + current, 0) iti va calcula fiecare pret (0 fiind valoarea initiala).

2 Likes

Sper din auflet ca e tema pt acasa, nu cod de productie.
Calculele se fac server-side!

6 Likes

Este tema pentru acasa. Sunt la inceput si incerc sa invat javascript.