Этот массив передается в функцию Shuffle , которая использует алгоритм Shuffle Fisher Yates.
Код: Выделить всё
let deck = [{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1},{face:'2',value:2},{face:'3',value:3},{face:'4',value:4},{face:'5',value:5},{face:'6',value:6},{face:'7',value:7},{face:'8',value:8},{face:'9',value:9},{face:'10',value:10},{face:'J',value:10},{face:'Q',value:10},{face:'K',value:10},{face:'A',value:10,value2:11,value3:1}]
let userHand = []
let dealerHand = []
function shuffle(array) {
let currentIndex = array.length;
// While there remain elements to shuffle...
while (currentIndex != 0) {
// Pick a remaining element...
let randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
}
shuffle(deck)
console.log(deck)
function deal(){
userHand.push(deck.shift()); // Removes and gives first card
dealerHand.push(deck.shift()); // Removes and gives second card
userHand.push(deck.shift()); // Removes and gives third card
dealerHand.push(deck.shift()); // Removes and gives fourth card
console.log(userHand, dealerHand)
console.log(deck)
}
deal()
Вместо этого этого не происходит. Вместо deck.shift () Удаление индекса [0] obj из колоды, он удаляет объект при случайном индексе и добавляет его в пользовательскую руку /
Код: Выделить всё
dealerHandперетасованная колода
после выполнения функции сделки
Подробнее здесь: https://stackoverflow.com/questions/795 ... ndom-index