Objekte in Java Script

  • Hallo Leute,

    ich hab ein Problem was das Erstellen von Objekten in meinem JavaScript Projekt angeht.

    Ziel ist es hier aus einer Funktion heraus 2 Arrays in meinem Objekt zu speichern, welches dann mittels JSON an ein JAVA-Programm weitergegeben werden soll.


    Hier ist etwas von meinem Code:

    bestellung beinhaltet hier: ein Array mit einer Liste an Getränkenamen (Strings)

    preisDerBoxen : ein Array mit einer Liste an Preisen (Float)

    endsumme: stellt den Gesamtpreis dar.


    Ich möchte diese Daten mittels JSON an ein Java Programm versenden. Dafür muss ich aber zunächst ein Objekt erzeugen. Oder anders gesagt, ich möchte es über ein Objekt machen.

    die übliche Syntax habe ich bereits ausprobiert:

    bestellungO{};

    bestellungO.bestellung = bestellung;

    -> Das gesamte Script funktioniert nicht mehr

    bestellungO=new bestellungO();

    bestellungO.bestellung = bestellung;

    -> nach der Zeile wird Code nicht mehr aufgerufen.


    Was mache ich falsch, bzw. was muss ich tun um den Code funktional zu gestalten.

    Von einer eleganten Lösung kann man hier an der Stelle noch nicht reden. Das ist mir durchaus bewusst. Dennoch muss ich das Prinzip JSON und Objekte in JavaScript zunächst verinnerlichen und habe mir dafür diese Übung geschrieben.

    Ich bin für jede Art von Ratschlag oder Tipp sehr dankbar.

    LG

  • Ich würde das etwas anders aufziehen:

  • Ok vielen Dank für deinen Rat! Das macht natürlich mehr Sinn.

    Wie bereits erwähnt geht es hier nun für mich mehr darum zu verstehen, warum es bei mir so nicht geht!

    Wie bereits erwähnt. Die gängigen Konventionen scheitern alle bei mir.

    Daher würde ich gern den Grund dafür wissen.

  • hier ist der JS-Code. Komplett.


    Hier kommt der HTML-Code dahinter:

    Ich hoffe damit kannst du mehr anfangen.

    Habe auch das Problem, dass wenn ich bestimmte Boxen anwähle, der Endpreis nicht korrekt berechnet wird, bzw das Komma seltsam gesetzt wird.

    Scheinbar läuft da was mit den Datentypen in CalcPrice() nicht ganz rund.

    Habe dann manuell eine 0 angefügt, damit ich eine normale Ausgabe habe. Wie schon gesagt, es war ein schnelles Kontrukt, um zu dem Punkt zu kommen an dem ich jetzt bin. Ich möchte schließlich hauptsächlich Objekte erzeugen und JSON verwenden.

    Vielleicht siehst du ja was das Problem ist. Habe deine Lösung noch nicht implementiert

  • Ich würde es toll finden, wenn wir uns zunächst auf das Erstellen eines JSON-Objects konzentrieren könnten.

    in deinem Programm oben schreibst du:


    let bestellung = {boxen: boxen, preisDerBox: preisDerBox}; //preisDerBox ersetzt in diesem Fall gesamtPreis

    //weil darin der einzelPreis für jedes Getränk gespeichert sein soll

    wie würde dann der Zugriff aussehen?

    bestellung[0,0] wäre dann der boxname

    bestellung[0,1] wäre dann der preis der Box?


    LG

  • Um dir über die Struktur des Endergebnisses einen Überblock zu verschaffen, lässt Du sie am bestem mal in der Console ausgeben:

    Code
    1. let bestellung = {boxen: boxen, gesamtPreis: gesamtPreis};
    2. console.log(bestellung);

    Um dann auf den Gesamtpreis und die Einzelheiten einer Box zuzugreifen, kannst Du dann diesen Code benutzen:

    Code
    1. // den Gesamtpreis ausgeben:
    2. console.log(bestellung.gesamtPreis);
    3. // den Namen der ersten Box ausgeben:
    4. console.log(bestellung.boxen[0].name);
    5. // den Preis der ersten Box ausgeben:
    6. console.log(bestellung.boxen[0].preis;

    Oder alternativ geht auch diese Syntax:

    Code
    1. console.log(bestellung['gesamtPreis']);
  • let bestellung = {boxen: boxen, gesamtPreis: gesamtPreis};


    an der Stelle wäre dann "boxen" das Array mit den Getränkenamen. ?

    Dann hätte man :

    Boxen[0] = Getränkename1

    Boxen[1] = Getränkename2

    etc.


    das gleiche bezieht sich auf gesamtPreis oder?

    dann würde ich praktisch "bestellung" versenden.

    Korrekt?

  • Ich verstehe den grundliegenden Aufbau eines JSON-Objekts.


    Nur wie man arrays darin platziert ergibt sich daraus nicht für mich.


    bestellung ={boxen: alleGetränkenamen , preise: alleGetränkepreise, gesamtPreis: endsumme};

    Erklärt wird immer so:

    bestellung =

    {"bestellung": "getraenk1" , "Preise" : "PreisFuerCubaLibre"};




    so hätte ich es gern!

    Ist das nachvollziehbar?

  • ok aktueller Code:

    Code
    1. gecheckteBox = document.liste.elements[i].name;
    2. bestellung.push(gecheckteBox);
    3. preisDerBox = document.liste.elements[i].value;
    4. parseFloat(preisDerBox);
    5. preisDerBoxen.push(preisDerBox);
    6. bestellungJSON=JSON.stringify(gecheckteBox);
    7. preisDerBoxenJSON=JSON.stringifiy(preisDerBox);
    8. //bestellungJSON = {name: bestellungJSON , preis: preisDerBoxenJSON, endsumme: endsumme }

    oder

    Code
    1. gecheckteBox = document.liste.elements[i].name;
    2. bestellung.push(gecheckteBox);
    3. preisDerBox = document.liste.elements[i].value;
    4. parseFloat(preisDerBox);
    5. preisDerBoxen.push(preisDerBox);
    6. //bestellungJSON = {name: gecheckteBox, preis: preisDerBoxen, endsumme : endsumme}

    Wenn ich das umsetze sollte ich ein derartiges JSON-Objekt transportieren können.

    Ist das so korrekt?

    Vielen Dank für die erneute Hilfestellung!

    LG

  • Ich gehe davon aus, dass Du alles zusammen in ein JSON packen willst, dann darfst Du das stringify erst auf das Endergebnis anwenden: