shuffle

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sempervivum

Erfahrenes Mitglied
Durchgemischt bekommst Du es schon bei dem Code, den Du hast, nur dass die originale Version verloren geht. Wenn Du diese behalten möchtest, musst Du das Array klonen, so wie es in dem Link in #6 beschrieben wird.
 

Jofre

Erfahrenes Mitglied
Lösungsidee?

Ich nehme in diesem Beispiel zahl erneut . Shuffle zahl erneut und weise über eine for Schleife
gesuchtNeu =gesuchtBasis[zw2];

habe mit .... versucht zu arbeiten.

ist das ok?
 

Sempervivum

Erfahrenes Mitglied
Dieses funktioniert bei mir:
Code:
        function erstellKombination() {
            var buch1 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"];
            var buch2 = ["H", "I", "j", "k", "l", "m", "n", "o", "p", "q"];
            var zahl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
            function shuffleArray(array) {
                for (var i = array.length - 1; i > 0; i--) {
                    var j = Math.floor(Math.random() * (i + 1));
                    var temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
            function cloneArray(arr) {
                let newArray = [];
                for (let i = 0; i < arr.length; i++) {
                    newArray[i] = arr[i];
                }
                return newArray;
            }

            var zw1 = cloneArray(buch1);
            shuffleArray(zw1);
            var zw2 = cloneArray(buch2);
            shuffleArray(zw2);
            var zw3 = cloneArray(zahl);
            shuffleArray(zw3);
            console.log("buch1 durchgemischt:" + zw1);
            console.log("buch2 durchgemischt:" + zw2);
            console.log("zahl durchgemischt:" + zw3);

            var gesuchtBasis = [];
            for (let i = 0; i < 10; i++) {
                gesuchtBasis[i] = zw1[i] + zw2[i] + zw3[i];
            }
            gesuchtNeu = cloneArray(gesuchtBasis);
            shuffleArray(gesuchtNeu);

            console.log("gesuchtBasis  in erstellkombination " + gesuchtBasis);
            console.log("gesucht neu " + gesuchtNeu);
        }
        erstellKombination();
Man hätte es noch etwas eleganter machen können, indem man die shuffle-Funktion als Prototyp für Array definieren würde. Oder man hätte das Klonen in die shuffle-Funktion übernehmen können.
 

ComFreek

Mod | @comfreek
Moderator
Man hätte es noch etwas eleganter machen können, indem man die shuffle-Funktion als Prototyp für Array definieren würde.
Das Verändern eines built-in Prototypes war noch nie eine gute Idee.
Siehe auch Why is extending native objects a bad practice?.

(Wenn meine ständigen offtopic Verbesserungsvorschläge zu viel werden, sagt es ruhig ;) Ich mache es nur in der Hoffnung auf besseren Code auf dieser Erde :coffee:)
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…