@redhurt

Как рандомно перемешать элементы массива?

Допустим есть массив:
var deck = ["DJ", "DJ", "S10", "S10", "SQ", "SQ", "SK", "SK", "CQ", "CQ"];

Подскажите пожалуйста, как можно рандомно перемешать его элементы? Желательно на "чистом" JS
  • Вопрос задан
  • 10849 просмотров
Решения вопроса 1
function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex;

  while (0 !== currentIndex) {

    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;

    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }

  return array;
}

https://stackoverflow.com/questions/2450954/how-to...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
var deck = ["DJ", "DJ", "S10", "S10", "SQ", "SQ", "SK", "SK", "CQ", "CQ"];

function makeRandomArr(a, b) {
  return Math.random() - 0.5;
}

deck.sort(makeRandomArr);
Ответ написан
msdos-x86
@msdos-x86
самоучка
function random(n) {
	return Math.floor(Math.random() * Math.floor(n));
}

function shuffle (arr) {
	for (var i = 0; i < arr.length; i++) {
		var j = random(arr.length);
		var k = random(arr.length);
		var t = arr[j];
		arr[j] = arr[k];
		arr[k] = t;
	}
	return arr;
}

var deck = ["DJ", "DJ", "S10", "S10", "SQ", "SQ", "SK", "SK", "CQ", "CQ"];
deck = shuffle(deck);
Ответ написан
Комментировать
@pioner92
Java Script developer
более короткая запись

const shuffle = (arr) => {
    return arr.sort(() => Math.round(Math.random() * 100) - 50);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы