Javascript 卡片绘制模拟不返回值

Javascript 卡片绘制模拟不返回值,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我想模拟两轮抽牌,然后从递减的牌堆中选择价值更高的牌 除了playHistory数组的最终返回(当我将其返回到GoogleSheets时为空)之外,代码的每个区域似乎都正常工作。没有错误,没有数据。如果我只调用playCard函数或返回deck数组,则都会打印正确的值 //全局变量 var deck=[1,1,1,2,2,3,3]; var playHistory=[]; var cardsPlayed=-1//所以第一张牌是playHistory数组中的索引0 功能模拟游戏(回合){ var

我想模拟两轮抽牌,然后从递减的牌堆中选择价值更高的牌

除了playHistory数组的最终返回(当我将其返回到GoogleSheets时为空)之外,代码的每个区域似乎都正常工作。没有错误,没有数据。如果我只调用playCard函数或返回deck数组,则都会打印正确的值

//全局变量
var deck=[1,1,1,2,2,3,3];
var playHistory=[];
var cardsPlayed=-1//所以第一张牌是playHistory数组中的索引0
功能模拟游戏(回合){
var i;
对于(i=0;i图2){
push(draw1);
}否则{
播放历史。推(draw2);
}
cardsPlayed=cardsPlayed+1;
返回播放历史记录[cardsPlayed];

}
这可能不值得回答,但当您运行函数时,返回的数据是否正确?我想问题在于你的谷歌表单,而不是你的JS

//全局变量
var deck=[1,1,1,2,2,3,3];
var playHistory=[];
var cardsPlayed=-1//所以第一张牌是playHistory数组中的索引0
console.log(simGame(3));
功能模拟游戏(回合){
var i;
对于(i=0;i图2){
push(draw1);
}否则{
播放历史。推(draw2);
}
cardsPlayed=cardsPlayed+1;
返回播放历史记录[cardsPlayed];

}
为了给出一个明确的解决方案,该问题与语法错误有关:

  draw1 = [deck.splice(Math.floor(Math.random() * deck.length), 1)];
  draw2 = [deck.splice(Math.floor(Math.random() * deck.length), 1)];
如果拼接不必要地封闭在支架之间:

  draw1 = deck.splice(Math.floor(Math.random() * deck.length), 1);
  draw2 = deck.splice(Math.floor(Math.random() * deck.length), 1);

我使这变得更简单了,因为我预先将牌组与牌组一起洗牌,然后从牌组中洗牌,而不是拼接。使用randojs洗牌只需说
randoSequence(牌组)

var-deck=[1,1,1,2,2,3,3];
功能模拟游戏(回合){
var playHistory=[]
var shuffledDeck=随机序列(甲板);
对于(变量i=0;i0;i++){
var draw1=(shuffledDeck.pop()| |{value:0});
var draw2=(shuffledDeck.pop()| |{value:0});
push(Math.max(draw1,draw2));
}
回归历史;
}
console.log(simGame(5))

您从未调用过任何函数吗?您只需定义它们,但整个应用程序只需定义一组变量和函数,然后退出。嗯,函数可以工作。如果在示例中仅
console.log(playCard())
,则会得到一个返回值。我不确定我们是否能诊断出一个我们无法观察到的问题,因为它似乎不在这里。
simGame
也能按预期工作。至少在这里。同样,我无法重现您描述的问题-我不知道哪里出了问题,也不知道您希望我们如何解决它。您的函数按预期工作,它可能不会返回您期望的结果。调用simGame()的结果是一个填充了双嵌套数组的数组,因为您将拼接封装在一个数组中。splice已经返回了一个数组。因此simGame(3)的一个示例结果是
[[3]]、[[2]]、[[1]]]
。这是google sheets期望的格式吗?@Shilly否。google sheets期望的是二维数组
@bulkhed
你有不必要的数组嵌套。我想让我困惑的是,如果我从playCard()返回数组组或playHistory数组,它会正确返回。但是如果我返回数组播放历史记录(来自simGame()函数),它是空的。在全局变量之后,我调用“console.log(simGame(3));”,这将最终返回playHistory,这不是空的。这似乎是Google Sheets显示的问题。谢谢你的帮助。