JavaScript

Можете привести примеры функции перемешивания массива в javascript? -_-

я пытаюсь перемешать массив картинок, чтобы они в случайном порядке выстраивались, но получается какая то дрянь. лезу в примеры с курсов, а там все на эльфийском:

function arrayShuffle(a){
if(a.length == 1) return this;
for(var j, x, i = a.length; i; j = Math.floor(Math.random() * i), x = a[--i], a[i] = a[j], a[j] = x);
return a;
}

можете подсказать что к чему или еще какие нибудь примеры привести или хоть что то? (
Саша Гуцол
Саша Гуцол
1 764
Могу пояснить за эту функцию
function arrayShuffle(a){
Принимает на вход массив a
for(var j, x, i = a.length; i; j = Math.floor(Math.random() * i), x = a[--i], a[i] = a[j], a[j] = x);
Вот тут отбитый хрен какой-то писал, но поясняю по частям.
1.Берутся переменные j, x и i, i в данном случае выступает итератором и ему сразу присваивается значение длины массива.
2.Дальше j присваивается случайное значение от 0 до i.
3.Меняют местами значения a[i-1] и a[j] с помощью переменной x, и вместе с этим снижают значение i на 1
Когда i становится 0, происходит выход из цикла
return a;}
Ну и возвращаешь уже перемешанный массив а

Все просто
Максим Баюрак
Максим Баюрак
11 157
Лучший ответ
Саша Гуцол а как работает это? x = a[--i], a[i] = a[j], a[j] = x

и почему в цикле нет что то вроде i<0 а просто i?

извините за кучу вопросов, просто некому разжевать это все -_- среди друзей ни одного программиста
Берёшь последовательно каждый элемент массива.
Генерируешь случайное число в пределах длины массива.
Меняешь местами два элемента.
Array.prototype.shuffle = function( b ){
var i = this.length, j, t;
while( i ) {
j = Math.floor( ( i-- ) * Math.random() );
t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
this[i] = this[j];
this[j] = t;
}
return this;
};
Примеры использования: // Перемешивание одномерного массива
var a = new Array(1,2,3,4,5);
alert( a.shuffle() );
1) http://webhamster.ru/mytetrashare/index/mtb0/4022

2) тут несколько примеров перетасовки массивов выбирай - +читай комменты
http://javascript.ru/php/shuffle
Намутили тут шляпы какой-то. [1,2,3,4,5,"строка"].sort(()=>Math.floor(Math.random() * 2))