JavaScript Array nach gleichen durchsuchen?
Hallo ist es möglich ein Array (ohne for Schleife) nach gleichen werten zu durchsuchen und diese in ein neues Array zu speichern
LG
3 Antworten
Das wurde hier schonmal besprochen: https://stackoverflow.com/questions/143847/best-way-to-find-if-an-item-is-in-a-javascript-array
Liebe Grüße
Nimm anstatt der for-Schleife eine while-Schleife. Oder wenns is eine Goto-Schleife.
Du brauchst halt irgend eine Art von Schleife um das Array Feld für Feld durchzugehen. Auch .includes-Methoden benutzen im Hintergrund eine Schleife.
Kannst natürlich auch die Schleife hard-coden ( also if(a[0] == „x“ ){..}if(a[1] == „x“ ){..} etc. )dann ist da garkeine Schleife mehr, aber dann kann das Array immer nur die selbe Länge haben.
Um die Schleife kommst du also schlecht rum.
Edit: Mit toString und Regex könnts auch gehen, wobei ich mir da nicht sicher bin ob das eine Schleife benutzt.
Ausserdem könnte man das Array einfach in einen Stream umwandeln, und so Stück für Stück durchgehen.
Ich weiß jetzt nicht, ob ich deine Frage richtig verstanden habe. Du möchtest nach gleichen Werten in einem Array suchen, also Werte, die mehr als einmal vorkommen. Und ich vermute, die Schleife stört dich, weil du dafür 2 geschachtelte Schleifen verwenden würdest, um jeden Wert mit jedem anderen zu vergleichen. Das sind dann recht schnell ziemlich viele Schleifendurchläufe.
Du könntest ein "assoziatives Array" verwenden, Dann kommst du mit 2 Schleifendurchläufen hintereinander aus, also deutlich weniger:
var asso = new Object
var arr=['a','b','c','a','d','e','c','c']
for (var i=0;i<arr.length;i++)
{
if (asso[arr[i]]==undefined)
asso[arr[i]]=1
else
asso[arr[i]]++
}
for (var a in asso)
{
console.log(a + " " + asso[a])
}
Die mehrfach vorkommenden Werte sind also die, bei denn asso[a] > 1 ist.
In JavaScript gibt es den goto-Befehl nicht.