JavaScript Array nach gleichen durchsuchen?

3 Antworten

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.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

MrAmazing2  16.05.2020, 18:44

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.

0
regex9  16.05.2020, 21:21
Oder wenns is eine Goto-Schleife.

In JavaScript gibt es den goto-Befehl nicht.

1

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.