2013-11-07 3 views
0

У меня вопрос, как я могу перетасовать этот массив внутри массива? пожалуйста, любезно помогите мне. я бы очень признателен, что вы помогаете парням, спасибо вам!Shuffle на массиве

Что я пытаюсь сделать, это перетасовать этот массив внутри массива.

// ______________________________________________Function to declare our var -> deck of cards 

function getDeck() { 

    var deck = [ 
     {suit: "H", face: "A"}, 
     {suit: "H", face: "2"}, 
     {suit: "H", face: "3"}, 
     {suit: "H", face: "4"}, 
     {suit: "H", face: "5"}, 
     {suit: "H", face: "6"}, 
     {suit: "H", face: "7"}, 
     {suit: "H", face: "8"}, 
     {suit: "H", face: "9"}, 
     {suit: "H", face: "10"}, 
     {suit: "H", face: "J"}, 
     {suit: "H", face: "Q"}, 
     {suit: "H", face: "K"}, 
     {suit: "C", face: "A"}, 
     {suit: "C", face: "2"}, 
     {suit: "C", face: "3"}, 
     {suit: "C", face: "4"}, 
     {suit: "C", face: "5"}, 
     {suit: "C", face: "6"}, 
     {suit: "C", face: "7"}, 
     {suit: "C", face: "8"}, 
     {suit: "C", face: "9"}, 
     {suit: "C", face: "10"}, 
     {suit: "C", face: "J"}, 
     {suit: "C", face: "Q"}, 
     {suit: "C", face: "K"}, 
     {suit: "D", face: "A"}, 
     {suit: "D", face: "2"}, 
     {suit: "D", face: "3"}, 
     {suit: "D", face: "4"}, 
     {suit: "D", face: "5"}, 
     {suit: "D", face: "6"}, 
     {suit: "D", face: "7"}, 
     {suit: "D", face: "8"}, 
     {suit: "D", face: "9"}, 
     {suit: "D", face: "10"}, 
     {suit: "D", face: "J"}, 
     {suit: "D", face: "Q"}, 
     {suit: "D", face: "K"}, 
     {suit: "S", face: "A"}, 
     {suit: "S", face: "2"}, 
     {suit: "S", face: "3"}, 
     {suit: "S", face: "4"}, 
     {suit: "S", face: "5"}, 
     {suit: "S", face: "6"}, 
     {suit: "S", face: "7"}, 
     {suit: "S", face: "8"}, 
     {suit: "S", face: "9"}, 
     {suit: "S", face: "10"}, 
     {suit: "S", face: "J"}, 
     {suit: "S", face: "Q"}, 
     {suit: "S", face: "K"}, 
    ]; 

    return deck; 
} 

// ______________________________________________Function to shuffle cards 

function shuffle(o) { // o is passed-in array 

    for (var j, x, i = o.length; i; j = parseInt(Math.random() * i, 10), x = o[--i], o[i] = o[j], o[j] = x); 
    return o; 

}; 

Вот и другой код, и я думаю, что здесь проблема или нет? :

// ______________________________________________Function to retrieve our deck of cards & save into localStorage 

function getShoe(decks) { 

    var shoe = []; 
    var deck = getDeck(); 
    this.decks = decks; 

     for (z=1;z<=decks;z++) { 
      shoe.push(deck); 
     } 

    shoe = shuffle(shoe); 
    return shoe; 


    localStorage.setItem('shoe', JSON.stringify(shoe)); 

} 

ответ

0

Используйте это для функции воспроизведения в случайном порядке:

o.sort(function() {return 0.5 - Math.random()}) 

От http://www.javascriptkit.com/javatutors/arraysort.shtml

+0

Deck еще не перемешиваются. – user2910182

+0

Интересно. Вы получаете какие-либо ошибки или ничего не происходит? – lincb

+0

Это плохой способ перетасовать. Мой пост здесь охватывает эти понятия более подробно: http://stackoverflow.com/questions/557911/shuffle-using-icomparer В двух словах: он подвержен сбою, поскольку данные три элемента (a, b и c) в большем список, в разных точках во время тасования он может сравниться так, что a> b, b> c и c> a. Даже если это не так, этот метод склонен к предвзятости. –