JavaScript: Schlüssel zum Umbenennen von Objekten
Ist es ein kluger (D. H. optimalen) Weg, um das umbenennen einer Taste in ein javascript-Objekt?
Einen nicht optimierten Weg wäre:
o[ new_key ] = o[ old_key ];
delete o[ old_key ];
InformationsquelleAutor der Frage Jean Vincent | 2011-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die vollständige (und richtige) Weg, dies zu tun wäre, glaube ich:
Diese Methode sorgt dafür, dass die umbenannten Eigenschaft verhält sich identisch an das original.
Auch, es scheint mir, dass die Möglichkeit, wickeln Sie diese in eine Funktion/Methode und legen Sie es in
Object.prototype
ist irrelevant in Bezug auf Ihre Frage.InformationsquelleAutor der Antwort Valeriu Paloş
Könnten Sie wickeln die Arbeit in einer Funktion und weisen Sie auf die
Object
Prototyp. Vielleicht nutzen die fluent-Oberfläche, um mehrere benennt fließen.ECMAScript 5 Spezifische
Möchte ich die syntax nicht diese komplexe, aber es ist definitiv schön, mit mehr Kontrolle.
InformationsquelleAutor der Antwort ChaosPandion
Fall, jemand Bedürfnisse benennen Sie eine Liste der Eigenschaften:
Verwendung:
InformationsquelleAutor der Antwort pomber
Ich würde so etwas tun:
InformationsquelleAutor der Antwort tldr
Wenn Sie mutierend Ihre Quelle-Objekt, ES6 kann es in einer Zeile.
Objekt löschen.assign(a, {[newKey]: o[oldKey] })[oldKey];
InformationsquelleAutor der Antwort nverba
Ich würde sagen, dass es besser wäre, aus einer konzeptionellen Sicht, lassen Sie einfach das alte Objekt (das vom web service), wie es ist, und setzen Sie die Werte, die Sie brauchen, in ein neues Objekt. Ich nehme an, Sie extrahieren bestimmte Felder bei der einen oder anderen Stelle auf jeden Fall, wenn nicht auf dem client, dann zumindest auf dem server. Die Tatsache, dass Sie gewählt haben, verwenden Sie Feldnamen, sind die gleichen wie jene, die vom web-service, nur Kleinbuchstaben, nicht wirklich ändern. Also, ich würde raten, so etwas zu tun:
Natürlich, ich mache alle Arten von Annahmen hier, das darf doch nicht wahr sein. Wenn dies nicht auf Sie zutrifft, oder wenn es zu langsam ist (ist es? Habe ich noch nicht getestet, aber ich glaube, der Unterschied wird kleiner als die Anzahl der Felder erhöht), ignorieren Sie bitte alle 🙂
Wenn Sie nicht wollen, dies zu tun, und Sie nur zur Unterstützung bestimmter Browser, können Sie auch das neue absorbentien, um auch wieder "groß - (Feld)": siehe http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/ und die links auf diese Seite für mehr Informationen.
EDIT:
Unglaublich, diese ist auch fast doppelt so schnell, zumindest auf meinem FF3.5 bei der Arbeit. Siehe: http://jsperf.com/spiny001
InformationsquelleAutor der Antwort Spiny Norman
Wenn Sie nicht wollen, zu mutieren Ihre Daten, prüfen diese Funktion...
Einer gründlichen Erklärung von yazied Bzadough
https://medium.com/front-end-hacking/immutably-rename-object-keys-in-javascript-5f6353c7b6dd
InformationsquelleAutor der Antwort Mulhoon
Persönlich ist der effektivste Weg, um umbenennen Schlüssel in Objekt ohne Implementierung extra schwere plugins und Räder:
Können Sie auch wickeln Sie es in
try-catch
wenn dein Objekt hat eine ungültige Struktur auf. Funktioniert perfekt 🙂InformationsquelleAutor der Antwort Novitoll
Während dieses nicht genau geben, eine bessere Lösung, um das umbenennen einer Taste bietet eine schnelle und einfache ES6 Weise zu benennen-keys in einem Objekt, während nicht mutiert die Daten, die Sie enthalten.
InformationsquelleAutor der Antwort Tudor Morar
Einige der Lösungen, die auf dieser Seite aufgelistet haben einige Nebenwirkungen:
Hier ist eine Lösung, die hält die position der Taste an der gleichen Stelle und ist kompatibel mit IE9+, hat aber ein neues Objekt zu erstellen und nicht die Schnellste Lösung:
Bitte beachten Sie: IE9 unterstützt möglicherweise nicht die forEach-im strikten Modus
InformationsquelleAutor der Antwort Jasdeep Khalsa