javascript - 尝试将一对数组值随机推送到另一个数组中而不重复javascript
问题描述
我正在尝试制作记忆卡游戏,但这部分很难弄清楚。我有一个带有一副纸牌的数组,我试图从纸牌中随机选择特定数量的卡片并将它们推入 gameBoard 数组,但我最初会不断重复这些卡片。基本上我试图洗牌。我尝试使用条件语句,但我不知道这是否正确,但它仍然不起作用。
javascript
const deckOfCards = [
'card1',
'card2',
'card3',
'card4',
'card8',
'card9',
'card10',
'card11',
'card12',
'card13',
'card14',
]
let shuffle = deckOfCards[Math.floor(Math.random() * deckOfCards.length)];
let pair = [shuffle, shuffle]
let len = mode
for (let i = pair; i < deckOfCards.length; i++) {
if (gameBoard.indexOf(deckOfCards[i]) === -1) {
gameBoard.push(deckOfCards[pair])
}
}
console.log(gameBoard)
});
let gameBoard = []
解决方案
只是一个想法:您可以将选定的元素移动到数组的后面,然后从先前未更改的数组的切片中随机选择东西......就像array.slice(0, {a_number_here}
.
我猜是这样的(我无法让您的代码正常工作,因此尚未测试):
let shuffle = deckOfCards[Math.floor(Math.random() * deckOfCards.length - 5)]
name = deckOfCards.splice(shuffle, 1)
deckOfCards.push(name)
顺便说一句,如果您可以使用库,只需使用 underscore.js,它就会变得非常简单。像这样:
b = _.shuffle(deckOfCards).slice(0,5);
console.log(b)
您也可以查看这些存储库(虽然我还没有机会查看它们,但它们有很多星星,所以):
推荐阅读
- css - 50% 的边界半径在提交但不是文本输入
- anylogic - 任何逻辑中基于代理大小的服务块
- r - R:如何根据模式从字符串中提取文本片段
- batch-file - For /F 循环如何使用 awk 或 tr 从结果中删除引号
- vb.net - VB.NET 选项卡控件在更改选项卡时暂停绘图
- php - 无法设置 Cookie
- ios - Swift - 在另一个 ViewController 中访问 ContainerView 内的 UIButton
- r - 将列传递到 purrr::walk2()
- reactjs - 有没有办法在 MockedProvider - Apollo Client 中模拟重新获取?
- java - 如何在 java 中使用 Satang“订单/用户”API?