Wie konvertiert einen string in eine map in javascript?
Sagen, wir haben einen query-string, der wie folgt aussieht:
"param1:'test1' && param2:'test2'"
Möchte ich es in ein Objekt anzeigen, wie diese:
{param:test1, param2:test2}
Wie konnte das geschehen? Dies scheint ein sehr häufiger Anwendungsfall.
InformationsquelleAutor ming yeow | 2010-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise verwende ich die "suchen und ersetzen nicht" Methode:
Beispiel: http://jsfiddle.net/bcJ9s/
Die wichtige Sache hier ist, ob man Vorhersagen kann, kann das format der "strings" vorne, um die regexp so einfach wie möglich. Dies wird Ihnen helfen mit der Wartung, in der Zukunft, aber sollte wohl auch irgendwo dokumentiert, so dass es klar ist, was die Annahmen sind.
InformationsquelleAutor Andy E
Solange es in diesem format, d.h. hat nur string-Werte (und die strings nicht enthalten
" && "
oder Doppelpunkte), können Sie leicht analysieren:Beachten Sie, dass die Zeichenfolgen sind natürlich noch Saiten:
{ param: 'test1', param2: 'test2' }
InformationsquelleAutor Guffa
Verwenden Sie die Zeichenfolge.split-Funktion brechen Sie die Zeichenfolge in die Teile, die Sie benötigen - so etwas wie dieses...
Zwar schlägt es mit Werten wie
"param1:'test:1' && param2:'test && 2'"
...es ist sehr viel wie eine regex exec(), außer es gibt keine Schleife und du zählst die sub-erfasst die in Ihrer eigenen Verschluss. Das ist, warum ich in Verbindung mit Artikel wo John Resig hat den Begriff geprägt und erläutert die Methode 🙂
sehr wahr, das ist, warum die Antwort von Andy E ist interessant.
E - nicht vor Ort den link. Danke für den Hinweis it out - eine Funktion, die einen string zurückgibt, anstatt ein string ist leicht zu verstehen, aber ich wusste nicht, dass die Funktion hat, bestimmte Aspekte des regexp-Suche übergeben werden. Wie üblich, Herr Resig weiß es am besten. 🙂
InformationsquelleAutor belugabob
Verwendung von string-Verarbeitung (Wie bereits von @Guffa, wird es scheitern, wenn Saiten selbst enthalten
&&
oder:
):Hinweis:
trim()
ist nicht verfügbar auf alten Browsern, müssen Sie dieses bit des Codes, bevor die oben [src]:"param1:'test:1' && param2:'test && 2'"
...Du hast Recht, ich dachte, dass das doch Lesen, was du oben gesagt, Ihre Antwort, so dass ich dachte, jemand anderes bezeichnet, weiß ich nicht, aber ich proabably Bearbeiten sollte auf dieses zu, danke.
InformationsquelleAutor aularon