- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一组这样的卡片名称:
var deckNames = [ "unused",
"sA", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "sJ", "sQ", "sK",
"hA", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "h10", "hJ", "hQ", "hK",
"cA", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "cJ", "cQ", "cK",
"dA", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "dJ", "dQ", "dK",
];
我想编写一个函数,从数组中随机选择一张卡片,并将其从上面的“deckNames”数组中删除。我写了以下内容,但似乎没有用。
var deal = function(){
var card = Math.floor(Math.random() * 52) + 1;
return deckNames[card];
deckNames.splice(card,1);
};
当我在控制台中运行 deal
函数时,它从数组中随机挑选并返回一张牌,但是 deckNames
数组本身并没有移除发牌从阵列。我怎样才能做到这一点?谢谢。
最佳答案
您的return
语句会在牌组被修改之前结束您的函数。切换语句,使 return
成为函数中的最后一个东西。此外,正如@DavidE 指出的那样,您无法在卡片被移除后从阵列中获取卡片,因此您必须在移除之前取回它:
var deal = function(){
var index = Math.floor(Math.random() * 52) + 1;
var card = deckNames[index];
deckNames.splice(index, 1);
return card;
};
或者简单地说:
var deal = function(){
var card = Math.floor(Math.random() * 52) + 1;
return deckNames.splice(card, 1)[0];
};
(因为 splice
返回被移除的元素,包装在一个新数组中)。
其他一些需要考虑的事情:
数组索引从 0 开始,因此您可能不希望随机数生成器中有 +1
。你实际上想要从 0 到 51* 的数字:
var card = Math.floor(Math.random() * 52);
每发一张牌,牌组的大小就会减少。不是每次生成最多 51 个随机数,而是在调用函数时根据牌组的大小来生成该数字。否则你会得到索引超出范围的错误。见下文。
最终,这会给你这样的东西:
var deal = function(){
var card = Math.floor(Math.random() * deckNames.length);
return deckNames.splice(card, 1)[0];
};
关于javascript - 从一副牌中发牌和从阵列中取出牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967891/
我有这样的数据。 (a,b,c,d) (g,b,v,n) (n,h,l,o) (,,,) (,,,) (,,,) (,,,) 我想取出空袋子。 所需的输出 (a,b,c,d) (g,b,v,n) (n
我是编程新手,我有一堆 CSV 文件,每个文件大约有 50 到 60 行。在未指定数量的行之后,第二列中有一个名为“NAME”的字符串。我想获取“NAME”之后第二列中的所有内容并将其打印到文本文件中
有没有办法在 linq 中删除以下代码中的 foreach 并产生相同的输出? DropDownList ddl = new DropDownList(); foreach (Data
注意-可以使用UIViewControllerAnimatedTransitioning https://developer.apple.com/library/ios/documentation/u
因此,我开始使用 Swift 为网站构建应用程序。主要目标是拥有一个可以接收通知(来自网站的 JSON)并可以显示网站所有功能的 iOS 应用程序。所以我可以从应用程序登录并注册到我的数据库,但问题是
我希望直接使用 ALAssetsLibrary 和 ALAsset 以 NSData 对象的形式提取图像。 使用 NSURL,我按以下方式取出图像。 NSURL *referenceURL =newU
我是一名优秀的程序员,十分优秀!