Wo liegt der Fehler, dass JavaScript neu hinzugefügte Bilder nicht berücksichtigt?

1 Antwort

fiel mir auf, dass die neu hinzugefügten Bilder nicht vopm Zufallsgenerator berücksichtigt werden.

Diese Aussage kann nicht richtig sein. Denn schauen wir uns doch mal deine Mischfunktion an:

function kartenMischen() {
    const ausgewählteBilder = bilder.slice(0);
    karten = ausgewählteBilder.sort(() => Math.random() - 0.5);
    karten = karten.slice(0, 10).concat(karten.slice(0, 10));
}

Zuerst kopierst du dir das komplette Bilder-Array in eine neue Variable. Das ist auch nötig, weil das anschließende sort das array in-place umsortieren wird. Im Übrigen kannst du dir den Parameter 0 in slice sparen, das es das Default-Verhalten ist.

Du hast an der Stelle in ausgewählteBilder eine Komplette Kopie aller Bilder, INKLUSIVE der neuen.

Dann kommt das Mischen. Und erst hier kommt dein Zufallsgenerator zum Einsatz. Jedes Array-Element wird mit dem vorherigen in der Sortierfunktion verglichen. Da der Zufallsgenerator normalerweise eine Zahl von 0-1 generiert und du 0.5 abziehst, werden zufällig entweder positive oder negative Zahlen erzeugt und das Array so umsortiert. Am Ende hast du "zufällig sortiert" und somit gemischt.

Es gibt aber nichts, was darauf hinweisen könnte, dass beim Mischen die neu hinzugefügten Bilder nicht berücksichtigt werden. Um das zu verifizieren müsstest du, bevor du die Karten in der letzten Zeile der Funktion zu Paaren der ersten 10 Elemente sliced, dir mal anschauen, was genau in karten steht.

Wie kamst du zu dieser Aussage? Hast du das wie oben verifiziert? Oder kommt die Aussage nur daher, dass du in verschiedenen Durchläufen nie eins der neuen Bilder gesehen hast?


Visierhoch 
Fragesteller
 24.10.2023, 12:09

Hallo,

und vielen Dank für die Antwort.

Der Fehler ist mir aufgefallen indem ich öfters das Spiel neu gestartet habe und keines der neuen Bilder angezeigt wurde. Ich habe aber gerade das Problem gelöst. Den Tab mit dem Spiel habe ich geschlossen. Die komplette Chronik gelöscht und das Spiel erneut gestartet. Daraufhin wurden auch die neuen Bilder angezeigt.

Wo genau jetzt der Fehler lag kann ich auch nicht sagen.

Auf jeden Fall funktioniert es jetzt.

Vielen Dank nochmal

0
Babelfish  24.10.2023, 12:27
@Visierhoch

Kleiner Tipp: In Chrome, Safari oder Firefox immer mit den WebTools testen und dort den Cache über den entsprechenden Haken deaktivieren. Dann muss man nicht immer den Browser-Cache löschen.

1