7 Stimmen

Wie erstelle ich einen Hash aus einem Array mit dem Prototype JavaScript framewor?

Ich habe ein Array ['red', 'green', 'blue']

Ich möchte einen neuen Hash aus diesem Array erstellen, das Ergebnis sollte sein

{'red':true, 'green':true, 'blue':true}

Wie lässt sich dieses Ziel am besten mit Prototype erreichen?

17voto

Felix Kling Punkte 751464

Iterieren Sie einfach über das Array und erstellen Sie dann den Hash:

var obj  = {};
for(var i = 0, l = colors.length; i < l; i++) {
    obj[colors[i]] = true;
}
var hash = new Hash(obj);

Sie können auch ein neues Hash-Objekt von Anfang an erstellen:

var hash = new Hash();
for(var i = 0, l = colors.length; i < l; i++) {
    hash.set(colors[i], true);
}

Ich schlage vor, einen Blick auf die Dokumentation .

11voto

Mike Fabrikant Punkte 402

Diese funktionale Javascript-Lösung verwendet Array.prototype.reduce() :

['red', 'green', 'blue']
.reduce((hash, elem) => { hash[elem] = true; return hash }, {})

Angaben zu den Parametern :

  • callback Funktion, die bei jedem Wert im Array ausgeführt wird.
  • initialValue Objekt, das als erstes Argument für den ersten Aufruf des Rückrufs zu verwenden ist.

Das dritte Argument des Rückrufs ist der Index des aktuell bearbeiteten Elements im Array. Wenn Sie also eine Nachschlagetabelle der Elemente mit ihrem Index erstellen wollten:

['red', 'green', 'blue'].reduce(
  (hash, elem, index) => {
    hash[elem] = index++;
    return hash
  }, {});

Rückgabe:

Object {red: 0, green: 1, blue: 2}

0voto

denisjacquemin Punkte 7375

Danke an alle

Hier ist meine Lösung mit prototypejs und inspiriert von Felix' Antwort

var hash = new Hash();
colors.each(function(color) {
  hash.set(color, true);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X