Wpis z mikrobloga

#javascript

pytanie z zakresu basic:

Co sprawia, że poniższa funkcja tak miesza tablice, że w wynikowej tablicy wartości komórek nie mogą się powtórzyć. Wiem, że tajemnica tkwi w ostatnim wierszu. Niech mi to ktoś wytłumaczy jak idiocie... tak się czuje :D

function mixArray(arr) {
for (var i=0; i<arr.length; i++) { //wykonujemy pętlę po całej tablicy
var j = Math.floor(Math.random() * arr.length); //losujemy wartość z przedziału 0 - tablica.length-1
var temp = arr[i]; //pod zmienną temp podstawiamy wartość bieżącego indexu
arr[i] = arr[j]; //pod bieżący index podstawiamy wartość z indexu wylosowanego
arr[j] = temp; //pod wylosowany podstawiamy wartość z bieżącego indexu
}
return arr;
}
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@esta87: co rozumiesz przez "w wynikowej tablicy wartości komórek nie mogą się powtórzyć"?

masz na myśli, ze po przemieszeniu kolejność wartości zawsze będzie inna niż przed?
jeśli tak, to chyba nie ma takiej gwarancji ;)
  • Odpowiedz
chodziło mi o to, że:
np z [10,20,15] dostane przykładowo [20,10,15] ale nigdy nie [20,20,20]

Już doszedłem do tego. Pętla for dla każdej następnej iteracji bierze tablice wynikową z poprzedniej. Przechodząc przez wszystkie iteracje miesza w każdej z nich maksymalnie dwie wartości, tak więc powtórzenie wartości jest niemożliwe ;)

Dopiero zaczynam zabawę z jscript ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@esta87: zgadza się, idzie po kolei po elementach tablicy i zamienia dany element z wylosowanym miejscami
nie modyfikuje samych wartosci, tylko je tasuje jak karty ;)
  • Odpowiedz