JavaScript-Array von 2-Element-Arrays in Objektschlüssel-Wertepaare konvertieren

8

Was ist der schnellste Algorithmus, um von etwas wie diesem zu kommen:

%Vor%

zu etwas wie diesem:

%Vor%

Bisher ist das, was ich mir ausgedacht habe:

%Vor%

das funktioniert gut, aber es scheint irgendwie tollpatschig. Gibt es einen besseren Weg? Würde etwas wie reduce () arbeiten und wäre das schneller?

    
Fred Guest 19.10.2014, 19:48
quelle

4 Antworten

9

Sie könnten tatsächlich Array.prototype.reduce verwenden:

%Vor%

Dabei ist p das Ergebnis der vorherigen Iteration, anfangs {} , und c ist das aktuelle Element des Arrays.

Es ist wahrscheinlich nicht schneller als array.forEach , aber es ist IMHO sauberer. Ich glaube nicht, dass es eine einfachere Implementierung als diese gibt.

Hinweis: Eine Funktion, die genau dies erfordert, existiert bereits in der Underscore Bibliothek: _.object(array)

    
Alnitak 19.10.2014, 19:51
quelle
2

Sie können die gesamte Sache in Array.prototype.reduce einfügen. wie das

%Vor%

Wir sammeln nur die Schlüssel-Wert-Paare im result -Objekt und schließlich wird das Ergebnis von reduce das Objekt result sein und wir geben es als das tatsächliche Ergebnis zurück.

    
thefourtheye 19.10.2014 19:51
quelle
1

Lodash hat eine _.fromPairs -Methode, die genau das tut.

Aus der Dokumentation:
_.fromPairs([['a', 1], ['b', 2]]); // => { 'a': 1, 'b': 2 }

    
Uri Klar 28.06.2017 08:57
quelle
1

Kurzfassung mit moderner Syntax:

%Vor%

Ich verwende diese Technik als Teil eines kurzen Abfrage-String-Parsers:

%Vor%     
Phrogz 01.07.2017 02:18
quelle

Tags und Links