Ich muss eine JSON-Datei füllen, jetzt habe ich so etwas:
{"element":{"id":10,"quantity":1}}
Und ich muss ein weiteres "Element" hinzufügen. Mein erster Schritt ist das Einfügen dieses JSON in einen Objekttyp mit cart = JSON.parse
. Jetzt muss ich das neue Element hinzufügen. Ich nahm an, ich muss ein cart.push
weiteres Element hinzufügen. Ich habe Folgendes versucht:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Aber ich habe die Fehlermeldung "Objekt hat keinen Methoden-Push" erhalten, wenn ich es versuche element.push
, und ich denke, ich mache etwas SEHR Falsches, weil ich das "Element" nirgendwo erzähle.
Wie kann ich das machen?
Edit: Entschuldigung an alle, ich hatte viel Verwirrung in meinem Kopf.
Ich dachte, ich kann nur den Objekttyp abrufen, wenn ich Daten entnehme JSON.parse
, aber ich bekomme zuerst das, was ich in den JSON eingefügt habe.
Das Setzen eines Arrays anstelle eines Objekts hat mein Problem gelöst. Ich habe auch hier viele Vorschläge verwendet. Vielen Dank an alle!
quelle
Antworten:
Ihr Element ist kein Array, Ihr Warenkorb muss jedoch ein Array sein, um viele Elementobjekte zu unterstützen. Codebeispiel:
Wenn der Warenkorb ein Array von Objekten im Formular sein soll,
{ element: { id: 10, quantity: 1} }
führen Sie folgende Schritte aus:JSON.stringify()
wurde als Anliegen in dem Kommentar erwähnt:quelle
Mit dieser Reihe
Sie definieren
element
, um ein einfaches Objekt zu sein. Das native JavaScript-Objekt hat keinepush()
Methode. Verwenden Sie diese Syntax, um einem einfachen Objekt neue Elemente hinzuzufügen:Auf der anderen Seite können Sie mit
element
als Array definierenDann können Sie Elemente mit hinzufügen
push()
.quelle
element[ yourKey ] = yourValue;
ist der beste Weg, einem Objekt ein Element hinzuzufügen.element[ yourkey ] = [ element{yourkey], yourNewValue ];
Wenn der Einkaufswagen als Objekt und nicht als Array gespeichert werden muss (obwohl ich das Speichern als [] empfehlen würde), können Sie die Struktur jederzeit ändern, um die ID als Schlüssel zu verwenden:
Auf diese Weise können Sie mehrere Artikel wie folgt in den Warenkorb legen:
quelle
Zum Anhängen an ein Objekt verwenden
Object.assign
Ausgabe:
quelle
element
, so dass es nur das letzte Element hat.Sie sollten
var element = [];
in Javascript schreiben,
{}
ist ein leeres Objekt und[]
ist ein leeres Array.quelle
quelle
Ich habe etwas im Zusammenhang mit diesem Versuch gelesen, wenn es nützlich ist.
1. Definieren Sie eine Push-Funktion innerhalb eines Objekts.
Jetzt können Sie Elemente wie ein Array verschieben
Dadurch wird dieses Objekt erzeugt
Beachten Sie, dass die Elemente mit Indizes hinzugefügt werden und dass dem Objekt eine neue Längeneigenschaft hinzugefügt wurde. Dies ist nützlich, um auch die Länge des Objekts zu ermitteln. Dies funktioniert aufgrund der generischen Natur der
push()
Funktionquelle
Dieser Code wird bearbeitet.
quelle
Versuche dies:
quelle
Hinzufügen neuer Schlüssel- / Paarelemente zum ursprünglichen Objekt:
obj neuer Wert:
quelle
Wenn jemand einen ähnlichen JSON erstellen möchte, ohne ihn
cart
als Array zu verwenden, gehen Sie wie folgt vor :Ich habe eine Reihe von Objekten
myArr
als:und ich werde versuchen, einen JSON mit der folgenden Struktur zu erstellen:
Sie können einfach tun-
quelle
cart[key]=value
Grunde eine Schlüsselwertkarte. Stimmen Sie ab, wenn die Antwort hilfreich war. Vielen Dank!Für alle, die noch nach einer Lösung suchen, denke ich, dass die Objekte in einem Array wie ...
Wenn Sie dann ein Element als Objekt verwenden möchten, können Sie dies tun ...
Setzen Sie eine Variable auf "id_that_we_want" und geben Sie ihr die ID des Elements, das wir von unserem Array erwarten. Ein "elemnt" -Objekt wird zurückgegeben. Natürlich müssen wir uns nicht ausweisen, um das Objekt zu finden. Wir könnten jede andere Eigenschaft verwenden, um den Fund durchzuführen.
quelle
ODER:
quelle
push ist eine Methode für Arrays, sodass Sie für Objekte den Index des letzten Elements abrufen und wahrscheinlich den gleichen Job wie push für Objekt wie unten ausführen können
Fügen Sie dann dem neuen Index des Elements ein Objekt hinzu
quelle
Wenn Sie nicht planen, eine Schleife in JS zu erstellen, übergeben Sie diese an PHP, um eine Schleife für Sie zu erstellen
Dieses Konzept kann ein bisschen helfen
quelle
Dies ist eine alte Frage, jedenfalls wird heute die Verwendung von Object.defineProperty empfohlen
quelle