【发布时间】:2017-02-19 11:09:50
【问题描述】:
我正在用 Javascript 编写一个简单的 BlackJack 游戏。到目前为止,我有一个这样的数组:
var deckArray = [ "card1", "card2",...,"card52" ]
我有一个这样设置的“交易”功能:
var deal = function(){
var card = Math.floor(Math.random() * deckArray.length);
return deckArray.splice(card,1)[0];
};
既然我已经在使用 Math.random 从deckArray 中随机选择,那么像这样在Lodash 中加入“洗牌”功能对我来说是多余的吗?
var shuffle = function(){
deckArray = _.shuffle(deckNames);
};
【问题讨论】:
-
两者都可以。顺便说一句,正如您所学 - 停止使用全局变量并将卡片组作为
deal函数的参数传递将是一个好习惯。 -
用字符串表示卡片也很糟糕。字符串是为人类服务的——计算机使用数字。
-
Lodash 的 Fisher-Yates 实现使用
Math.random: github.com/lodash/lodash/blob/master/shuffle.js
标签: javascript random lodash shuffle playing-cards