Derzeit habe ich ein Array wie dieses:
var uniqueCount = Array();
Nach ein paar Schritten sieht mein Array folgendermaßen aus:
uniqueCount = [a,b,c,d,d,e,a,b,c,f,g,h,h,h,e,a];
Wie kann ich zählen, wie viele a, b, c sich im Array befinden? Ich möchte ein Ergebnis haben wie:
a = 3
b = 1
c = 2
d = 2
etc.
javascript
arrays
detno29
quelle
quelle
{}
, keine funktionale Programmierungmap
.Antworten:
Demo Geige
Sie können auch Funktionen höherer Ordnung verwenden, um die Operation auszuführen. Siehe diese Antwort
quelle
for (var i = 0; i <= array_elements.length; i++) {
oder<=
anstelle von<
.quelle
counts[x] || 0
gibt den Wert von zurück,counts[x]
wenn er andernfalls festgelegt ist0
. Fügen Sie dann einfach eine hinzu und setzen Sie sie erneut in das Objekt. Die Zählung ist abgeschlossen.reduce
:var counts = your_array.reduce((map, val) => {map[val] = (map[val] || 0)+1; return map}, {} );
Etwas wie das:
Verwenden Sie eine einfache for-Schleife anstelle von forEach, wenn dies in älteren Browsern nicht unterbrochen werden soll.
quelle
uniqueCount.forEach(function(value, index) { count[value] = (count[value] || 0) + 1; });
Ich bin über diese (sehr alte) Frage gestolpert. Interessanterweise fehlt die offensichtlichste und eleganteste Lösung (imho): Array.prototype.reduce (...) . Alle gängigen Browser unterstützen diese Funktion seit etwa 2011 (IE) oder noch früher (alle anderen):
quelle
Einzelne Zeile basierend auf der Array-Funktion reduzieren
quelle
Einfach ist besser, eine Variable, eine Funktion :)
quelle
Ich denke, dies ist der einfachste Weg, um Vorkommen mit demselben Wert im Array zu zählen.
quelle
quelle
Niemand, der antwortet, scheint das
Map()
eingebaute Gerät dafür zu verwenden , was in der Regel meine Anlaufstelle ist, kombiniert mitArray.prototype.reduce()
:Nb, Sie müssen polyfill,
Map()
wenn Sie es in älteren Browsern verwenden möchten.quelle
get
undset
Funktionen kommen vomMap
Objekt. Der anfängliche Akkumulator ist jedoch kein Map-Objekt. Warum nimmt die reduzierte Version des Reduzierers eines?Map
Objekt. siehe das zweite Argument der Reduzierung.Map.prototype.set
Gibt das Kartenobjekt zurück undMap.prototype.get
gibtundefined
den Wert des Schlüssels zurück, der ihm übergeben wurde. Auf diese Weise können wir die aktuelle Anzahl jedes Buchstabens abrufen (oder,0
falls nicht definiert), diese um eins erhöhen und dann die Anzahl dieser Buchstaben auf die neue Anzahl setzen, wodurch die Karte zurückgegeben und der neue Akkumulatorwert wird.Sie können ein Objekt haben, das Zählungen enthält. Gehen Sie die Liste durch und erhöhen Sie die Anzahl für jedes Element:
quelle
counts[element] || 0
?Sie können es lösen, ohne for / while-Schleifen oder forEach zu verwenden.
Hoffe es hilft dir!
quelle
quelle
Sie können so etwas tun:
Jetzt haben Sie eine Karte mit allen Zeichen
quelle
quelle
Duplikate in einem Array mit Alphabeten:
Duplikate in einem Array mit Zahlen:
quelle
var testArray = ['a', 'b', 'c', 'd', 'd', 'e', 'a', 'b', 'c', 'f', 'g', 'h ',' h ',' h ',' e ',' a '];
quelle
quelle
vereinfachte sheet.js answare
quelle
Eine Kombination guter Antworten:
Hoffe es ist hilfreich.
quelle
}}
quelle
Mit array.map können wir die Schleife reduzieren, siehe dies auf jsfiddle
Zu testen:
quelle
quelle
Erstellen Sie beispielsweise eine Datei
demo.js
und führen Sie sie in der Konsole mit dem Knoten aus.demo.js
Sie erhalten dann Elemente in Form einer Matrix.Sie erhalten das Ergebnis in der Konsole wie folgt:
quelle
Schnellster Weg:
Die Rechenkomplexität ist O (n).
Der kürzeste Code:
Verwenden Sie ES6.
quelle
quelle
Deklarieren Sie ein Objekt
arr
, das den eindeutigen Satz als Schlüssel enthält. Füllen Siearr
das Array einmal mit map durch. Wenn der Schlüssel zuvor nicht gefunden wurde, fügen Sie den Schlüssel hinzu und weisen Sie den Wert Null zu. Erhöhen Sie bei jeder Iteration den Wert des Schlüssels.Gegeben testArray:
Lösung:
JSON.stringify(arr)
wird ausgegebenObject.keys(arr)
wird zurückkehren["a","b","c","d","e","f","g","h"]
Um das Vorkommen eines Elements zu finden, wird z. B. b
arr['b']
ausgegeben2
quelle
Verwendung:
CODE:
Snippet
quelle
In Javascript ist es einfach, die Methode zur Array-Reduzierung zu verwenden:
quelle