Javascript shift()总是返回0
Javascript shift() always returning 0
我有一个卡片组对象,它本质上只是用0-51(52张卡片)填充一个卡片数组,然后洗牌。我有一个cards.deal()方法,它返回一张卡片。当我使用cards.pop()时,我总是得到一个不同的数字,这是预期的;然而,当我使用cards.shift()时,它总是返回0。我满足于使用pop,但只是想了解一下为什么我在使用shift时总是得到0。我已经将洗牌次数改为10000这样的大数字,只是为了确保它的洗牌次数足以真正交换数组中的第一个元素。即使在0到51之间生成了10000个随机数之后,Math.ceil方法也可能不返回0吗?这是怎么回事?
function Deck(){
var cards = [];
this.shuffle = function(){
var tempCardHolder = 0;
var randomNumber = 0;
var randomNumber2 = 0;
// fill the card array with 52 cards
for (x = 0; x <= 51; x++){
cards[x] = x;
}
// now let's shuffle them up by swapping two cards randomly 50 times
for (y = 0; y < 100; y++){
// make sure we get two random numbers that are different
do {
randomNumber = Math.ceil(Math.random() * 51);
randomNumber2 = Math.ceil(Math.random() * 51);
} while (randomNumber == randomNumber2);
tempCardHolder = cards[randomNumber];
cards[randomNumber] = cards[randomNumber2];
cards[randomNumber2] = tempCardHolder;
}
}
this.deal = function(){
return cards.shift();
}
this.getNumCardsLeft = function(){
return cards.length;
}
}
使用Math.floor
对数字进行四舍五入。对于包含的范围,请确保您乘以一个比您想要的最大值大的值
以下是包含端点的随机整数生成器的示例
function random_int(max, min) {
min = min || 0;
return min + Math.floor(Math.random() * (max - min + 1));
}
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- Javascript shift()总是返回0
- JavaScript shift()方法是否返回元素的引用或副本?