Ich habe eine Zeichenfolge als
string = "firstName:name1, lastName:last1";
jetzt brauche ich ein objekt obj so dass
obj = {firstName:name1, lastName:last1}
Wie kann ich das in JS machen?
javascript
string
object
rahul
quelle
quelle
Antworten:
Die beste Lösung ist die Verwendung von JSON:
Dokumentation
JSON.parse(text[, reviver]);
Beispiele:
1)
2)
3) Übergeben einer Funktion an JSON
quelle
eval
später ausführen .Ihre Zeichenfolge sieht aus wie eine JSON-Zeichenfolge ohne geschweifte Klammern.
Das sollte dann funktionieren:
quelle
obj = eval('({' + str + '})');
Wenn ich richtig verstehe:
Ich gehe davon aus, dass sich der Eigenschaftsname links vom Doppelpunkt und der angenommene Zeichenfolgenwert rechts befindet.
Beachten Sie, dass
Array.forEach
es sich um JavaScript 1.6 handelt. Möglicherweise möchten Sie ein Toolkit verwenden, um maximale Kompatibilität zu gewährleisten.quelle
Dieser einfache Weg ...
Ausgabe
quelle
Wenn Sie JQuery verwenden:
ERINNERN SIE SICH: eval ist böse! : D.
quelle
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Sie müssen JSON.parse () verwenden, um String in ein Objekt zu konvertieren:
quelle
Da für die JSON.parse () -Methode die Objektschlüssel in Anführungszeichen eingeschlossen sein müssen, damit sie ordnungsgemäß funktionieren, müssen wir die Zeichenfolge zunächst in eine JSON-formatierte Zeichenfolge konvertieren, bevor wir die JSON.parse () -Methode aufrufen.
Dies würde auch dann funktionieren, wenn die Zeichenfolge ein komplexes Objekt hat (wie das folgende) und dennoch korrekt konvertiert wird. Stellen Sie einfach sicher, dass die Zeichenfolge selbst in einfache Anführungszeichen eingeschlossen ist.
quelle
Wenn Sie einen String wie diesen haben
foo: 1, bar: 2
, können Sie ihn in ein gültiges Objekt konvertieren mit:Danke an Niggler in #javascript dafür.
Update mit Erklärungen:
Verwirrende MDN-Dokumente:
Demo: http://jsbin.com/hiduhijevu/edit?js,console
Funktion:
quelle
Ich habe eine Lösung in wenigen Codezeilen implementiert, die ziemlich zuverlässig funktioniert.
Mit einem HTML-Element wie diesem möchte ich benutzerdefinierte Optionen übergeben:
Eine Funktion analysiert die benutzerdefinierten Optionen und gibt ein Objekt zurück, um es irgendwo zu verwenden:
quelle
data-
Attributs anstelle der Erstellung von pseudo-benutzerdefinierten Attributen wie einigen Frameworks / Bibliotheken.Das wird funktionieren:
Es ist jedoch nicht effizient. Was passiert, wenn Sie so etwas haben:
split()
wird 'http' teilen. Daher schlage ich vor, dass Sie ein spezielles Trennzeichen wie Pipe verwendenquelle
Ich benutze JSON5 und es funktioniert ziemlich gut.
Das Gute daran ist, dass es keine
eval
und keine enthältnew Function
, sehr sicher zu bedienen.quelle
Dies ist universeller Code, egal wie lang Ihre Eingabe ist, aber im selben Schema, wenn es Folgendes gibt: Trennzeichen :)
quelle
In deinem Fall
quelle
Das Array "Objekte" enthält alle Objekte
quelle
Ich weiß, dass dies ein alter Beitrag ist, habe aber nicht die richtige Antwort auf die Frage gefunden.
Jetzt können Sie die Werte verwenden
obj.firstName
undobj.lastName
abrufen, wie Sie es normalerweise mit einem Objekt tun würden.quelle