Fügen Sie eine Eigenschaft auf ein JavaScript-Objekt mit einer variable als name?
Ich bin ziehen Sie Elemente aus der DOM mit jQuery und wollen, um eine Immobilie auf einem Objekt mit der id
des DOM-Elements.
Beispiel
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
//Here is the problem
obj.name = value
})
Wenn itemsFromDom
umfasst ein element mit einem id
von "myId", ich will obj
haben eine Eigenschaft mit dem Namen "myId". Das obige gibt mir name
.
Wie kann ich die name-Eigenschaft ein Objekt mit einer variable mit JavaScript?
Siehe auch - Eigenschaft Zugriff: dot-notation vs. Klammern? und Dynamisch access-Objekt-Eigenschaft mit der Variablen
Siehe auch so erstellen Sie einen Objekt-Eigenschaft aus einer der Wert der Variablen in JavaScript?
Siehe auch so erstellen Sie einen Objekt-Eigenschaft aus einer der Wert der Variablen in JavaScript?
InformationsquelleAutor Todd R | 2009-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden Sie diese syntax entspricht:
InformationsquelleAutor CMS
Mit ECMAScript 2015 können Sie es direkt tun, die in object-Deklaration mit Klammer-notation:
Wo
key
kann eine beliebige Art von expression (üblicherweise eine variable) gibt einen Wert zurück:Diese Frage könnte zu ändern, aber es ' s verwiesen wird, die von anderen Fragen, die über die dynamische Erstellung von Objekten und so landete ich hier und glücklich profitiert von dieser Antwort.
lol ja warum würde ich gehen durch den Aufwand der
obj[name]=value
wenn ich könnte, nur verwenden Ihre Anregung stattIch bin mir nicht sicher, was ECMAScript 6 ist, aber ich Schätze es sehr,
ECMAScript 6 ist mehr formal als ECMAScript 2015 ("ES2015") aka ECMAScript 6th edition ("ES6"). Es ist die Spezifikation für JavaScript veröffentlicht im Juni 2015. Seitdem hatten wir ES2016 und bald werden ES2017, Sie sind auf einen jährlichen Zyklus jetzt.
InformationsquelleAutor kube
Können Sie auch die Liste der Objekte dieser
InformationsquelleAutor dnxit
Mit lodash, können Sie erstellen neues Objekt wie dieses _.set:
Oder Sie können auf bestehende Objekt wie folgt:
Sollten Sie kümmern, wenn Sie möchten, verwenden Sie einen Punkt (".") in Ihrem Weg, weil lodash können set-Hierarchie, zum Beispiel:
InformationsquelleAutor Momos Morbias
Gibt es zwei verschiedene Notationen, um Zugriff auf Objekt-Eigenschaften
Dot-notation ist schnell und einfach, aber Sie muss Verwendung der tatsächlichen Eigenschaft name explizit. Keine substitution, Variablen, etc.
Klammer-notation ist offen. Es verwendet eine Zeichenfolge, aber können Sie produzieren, die Zeichenkette mit jeder gesetzlichen js-code. Sie können angeben, die string als literal (obwohl in diesem Fall die Punkt-notation würde das Lesen einfacher) oder eine variable zu verwenden oder zu berechnen.
So, diese alle setzen die myObj Eigenschaft namens prop1 auf den Wert Hallo:
Fallstricke:
tl;dnr: Wenn Sie berechnen möchten oder auf die Taste, die Sie muss Verwendung Klammer-notation. Wenn Sie mit der Taste explizit, dann verwenden Sie die Punkt-notation für einfache, klare code.
Hinweis: es gibt einige andere gute und richtige Antworten, aber ich persönlich finde Sie ein bisschen kurz kommen, von einer geringen Vertrautheit mit JS on-the-fly Schrulligkeit. Dies kann hilfreich sein für einige Menschen.
InformationsquelleAutor jim birch
Mit dem Aufkommen der ES2015 Objekt.zuweisen und berechnete Eigenschaftsnamen der OP-code reduziert sich auf:
InformationsquelleAutor wOxxOm
Wenn Sie möchten, um zusätzliche Felder hinzuzufügen, um ein Objekt dynamisch zu, einfachsten Weg, es zu tun ist wie folgt:
So erstellen Sie Daten-Objekt hat folgende Felder:
InformationsquelleAutor Sruthi Poddutur
objectname.newProperty = value;
InformationsquelleAutor ARNAB
InformationsquelleAutor Shubham Asolkar