如何使用2个数组在角度js中洗牌?

时间:2015-11-20 05:51:06

标签: javascript angularjs

 #HTML#   
<!DOCTYPE html>
      <html>
      <head>
           <meta charset="utf-8">
           <script type="text/javascript" src='angular.js'></script>
           <script type="text/javascript" src='a.js'></script>
      </head>
      <body>
        <div ng-app="myApp" ng-controller="Ctrl"> 
          <button ng-click="shuffle(obj)">shuffle</button>
        <div ng-repeat="o in obj">
           {{o}}
        </div>   
        </div>
      </body>
      </html>

&#13;
&#13;
var app = angular.module('myApp',[]);

app.controller('Ctrl', ['$scope', function($scope){
     $scope.obj=[["Clubs", "Diamonds", "Hearts", "Spades" ],["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" ]]
       
       //var suits=$scope.suit.length;
      //var ranks=$scope.rank.length;
      //var t=suits*ranks;

      }]
    //generic shuffling function
    $scope.shuffle = function(o){

        for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        return o;
    };
}]);
&#13;
<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8">
<script type="text/javascript" src='angular.js'></script>
<script type="text/javascript" src='a.js'></script>
</head>
<body>
<div ng-app="myApp" ng-controller="Ctrl"> 
    <button ng-click="shuffle(obj)">shuffle</button>
   <div ng-repeat="o in obj">
       {{o}}
    </div>   
</div>

</body>
</html>
&#13;
&#13;
&#13;

var app = angular.module('myApp',[]);
app.controller('Ctrl', ['$scope', function($scope){
         $scope.obj=[["Clubs", "Diamonds", "Hearts", "Spades" ],["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" ]]

           var suits=$scope.suit.length;
           var ranks=$scope.rank.length;
           var t=suits*ranks;

          }]
        //generic shuffling function
        $scope.shuffle = function(o){

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

1 个答案:

答案 0 :(得分:2)

我使用lodash。它有一个简单的&#34; shuffle&#34;功能:

shuffled = _.shuffle(cards);

我想要具体说明我的卡片,而不仅仅是&#34; t&#34;,所以:

deck = function() {
    _.each(suits, function(suit){
        _.each(ranks, function(rank){
            cards.push( {
                suit: suit,
                value: rank
            });
        });
    });
},

然后,我会处理这些卡片:

deal = function() {
    shuffled = _.shuffle(cards);
    var card = 0;
    _.times(numCards, function(c) {
        _.times(players.length, function(p) {
            hands[p].push(shuffled[card]);
            showCard(p,c);
            card++;
        });
    });
},

这是一个小提琴手: https://jsfiddle.net/mckinleymedia/y2rvnzLL/1/

我希望这会有所帮助。