Ich ziehe mit jQuery Elemente aus dem DOM heraus und möchte mithilfe id
des DOM-Elements eine Eigenschaft für ein Objekt festlegen .
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
ein Element mit einer id
"myId" enthalten ist, möchte obj
ich eine Eigenschaft mit dem Namen "myId" haben. Das obige gibt mirname
.
Wie benenne ich eine Eigenschaft eines Objekts mithilfe einer Variablen mithilfe von JavaScript?
javascript
jquery
object
syntax
Todd R.
quelle
quelle
Antworten:
Sie können diese äquivalente Syntax verwenden:
quelle
Mit ECMAScript 2015 können Sie dies direkt in der Objektdeklaration in Klammernotation tun:
Wo
key
kann eine beliebige Art von Ausdruck (z. B. eine Variable) einen Wert zurückgeben:quelle
obj[name]=value
wenn ich stattdessen einfach Ihren Vorschlag verwenden könnteSie können sogar eine Liste solcher Objekte erstellen
quelle
Es gibt zwei verschiedene Notationen, um auf Objekteigenschaften zuzugreifen
Die Punktnotation ist schnell und einfach, aber Sie müssen den tatsächlichen Eigenschaftsnamen explizit verwenden. Keine Substitution, Variablen usw.
Die Klammernotation ist offen. Es wird eine Zeichenfolge verwendet, aber Sie können die Zeichenfolge mit einem beliebigen legalen js-Code erstellen. Sie können die Zeichenfolge als Literal angeben (obwohl in diesem Fall die Punktnotation leichter lesbar wäre) oder eine Variable verwenden oder auf irgendeine Weise berechnen.
Daher setzen diese alle die myObj- Eigenschaft mit dem Namen prop1 auf den Wert Hello :
Tücken:
tl; dnr : Wenn Sie den Schlüssel berechnen oder referenzieren möchten, müssen Sie die Klammernotation verwenden . Wenn Sie den Schlüssel explizit verwenden, verwenden Sie die Punktnotation für einfachen Code.
Hinweis: Es gibt einige andere gute und korrekte Antworten, aber ich persönlich fand sie etwas kurz, da ich mit JS on-the-fly-Skurrilität nur wenig vertraut bin. Dies kann für manche Menschen nützlich sein.
quelle
Mit lodash können Sie ein neues Objekt wie das folgende erstellen : set :
Oder Sie können ein vorhandenes Objekt wie folgt festlegen:
Sie sollten vorsichtig sein, wenn Sie einen Punkt (".") In Ihrem Pfad verwenden möchten, da lodash eine Hierarchie festlegen kann, zum Beispiel:
quelle
Zuerst müssen wir den Schlüssel als Variable definieren und dann zum Beispiel den Schlüssel als Objekt zuweisen
quelle
Mit dem Aufkommen von ES2015 Object.assign und berechneten Eigenschaftsnamen läuft der OP-Code auf Folgendes hinaus :
quelle
Wenn Sie einem Objekt dynamisch Felder hinzufügen möchten, gehen Sie am einfachsten wie folgt vor:
Dadurch wird ein Datenobjekt mit folgenden Feldern erstellt:
quelle
Wenn Sie ein Objekt haben, können Sie ein Array von Schlüsseln erstellen, dann zuordnen und aus vorherigen Objektschlüsseln und Werten ein neues Objekt erstellen.
quelle
Ajavascript hat zwei Arten von Anmerkungen zum Abrufen von Javascript-Objekteigenschaften:
Obj = {};
1) (.) Anmerkung z. Obj.id Dies funktioniert nur, wenn das Objekt bereits eine Eigenschaft mit dem Namen 'id' hat.
2) ([]) Anmerkung, z. Obj [id] hier Wenn das Objekt keine Eigenschaft mit dem Namen 'id' hat, wird eine neue Eigenschaft mit dem Namen 'id' erstellt.
also für folgendes Beispiel:
Eine neue Eigenschaft wird immer erstellt, wenn Sie Obj [Name] schreiben. Und wenn die Eigenschaft bereits mit demselben Namen vorhanden ist, wird sie überschrieben.
quelle
Bezogen auf das Thema, allerdings nicht speziell für jquery. Ich habe dies in ec6-Reaktionsprojekten verwendet und hilft vielleicht jemandem:
PS: Bitte beachten Sie das Anführungszeichen.
quelle
objectname.newProperty = value;
quelle
quelle