Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在一个循环(在另一个循环中)中创建数组并用Javascript将其传递回?_Arrays_Api_Variables_Loops - Fatal编程技术网

Arrays 如何在一个循环(在另一个循环中)中创建数组并用Javascript将其传递回?

Arrays 如何在一个循环(在另一个循环中)中创建数组并用Javascript将其传递回?,arrays,api,variables,loops,Arrays,Api,Variables,Loops,我正在使用谷歌文档电子表格API来跟踪我的一些朋友之间的竞争。我有一些重要的想法,但我现在被难住了。我试图在循环内部创建20个不同的数组(见下文),然后在循环外部对每个数组求值,我真的不想写20个“if…then”语句 注:以下总结可能有助于回答我的问题,也可能没有帮助。您可能希望跳到代码,如果需要,请阅读以下内容:) 程序摘要:每个玩家为一组二进制结果事件的一个可能结果分配分值。当事件发生时,玩家要么在结果发生时获得分配的分数,要么在结果相反时不获得分数。我的目标是1)找出一名球员被淘汰的确切

我正在使用谷歌文档电子表格API来跟踪我的一些朋友之间的竞争。我有一些重要的想法,但我现在被难住了。我试图在循环内部创建20个不同的数组(见下文),然后在循环外部对每个数组求值,我真的不想写20个“if…then”语句

注:以下总结可能有助于回答我的问题,也可能没有帮助。您可能希望跳到代码,如果需要,请阅读以下内容:)

程序摘要:每个玩家为一组二进制结果事件的一个可能结果分配分值。当事件发生时,玩家要么在结果发生时获得分配的分数,要么在结果相反时不获得分数。我的目标是1)找出一名球员被淘汰的确切时间,2)突出显示所有必须获胜的剩余项目,以便他们有机会在第一场比赛中平局

我没有试图以某种方式评估所有的可能性(5个玩家选择,2^16个结果…我没有计算机科学知识,但这似乎是一个难以置信的巨大任务,即使是对于现代计算机),而是想出了另一个想法。脚本循环通过每个玩家,对抗对方对手。它根据玩家的价值分配和已经确定的游戏计算玩家可以得分的最大点数。对于一个玩家和一个对手,它会检查玩家对该对手可能的最佳结果,如果有任何对手他无法击败,即使在最好的情况下,他也会被淘汰

这一部分很简单——在循环在循环内部运行之后,我只需调整我之前创建的一个全局变量,当外部循环完成时,只需获取这些变量并将它们写入工作表

不幸的是,这忽略了这样一种情况,即他可以针对每个单独的对手,但不能同时针对多个对手

所以下一步就是我现在要做的。我甚至不确定如果不向您展示整个电子表格w/脚本,我是否能给出一个好的解释,但我会尝试。所以我现在要做的是计算每个球员的每个项目相对于给定的其他球员的“价值”。如果玩家和对手都为一个事件分配了有利于相同事件结果的点数,则该事件的值是两次选择之间的差值(如果玩家选择较高,则为正值,如果较低,则为负值),如果他们选择了相反的事件结果,则为总和。现在,我做了和以前一样的事情——假设一个玩家对一个给定的对手有一个最好的情况——但是现在我检查玩家在一个最好的情况下能击败对手多少。然后,我根据这个差值来评估(绝对值)事件值,如果它更大,那么这个事件就是必胜(如果事件值为负,则必须输)。而且,如果一个事件既是“必胜”又是“必输”的事件,那么该玩家将被淘汰

问题是,这第二步要求我为每个玩家-对手组合创建一个新的值数组,然后在创建值之后使用这些值进行操作

我意识到一种方法是创建20个不同的数组,在整个循环中,不断检查“if(player==“1”&&oppost==2){}”,并相应地填充数组,但这似乎有点荒谬。更重要的是,整个项目都是我学习javascript的尝试,所以使用一个时间密集的工作环境又有什么意义呢

我试图理解方括号表示法,因为它似乎是我问题的答案,但很多人也认为,通过与另一个变量的值连接来创建变量名是不可能的。。。不管怎样,这就是我要尝试的。我真的很希望能对我的方法进行修正,或者更好的方法

for (var player=1; player<6; player++){
  if(player==1){look up certain columns in the spreadsheet and save them to variables}
  //ditto for other players

  for(var opponent=1; opponent<6; opponent++){
    if(player!=opponent){
      if(opponent==1){save more values to variables}
      //ditto for other players

  for(var row=9; row<24; row++) {
//Now the script goes down each row of an array containing the original
//spreadsheet info, and, based on information determined by the variables
//created above, get values corresponding to the player and opponent.
//So what I'd like to do here is create "array[1,2]==" and then "array[1,3]=="
//and so forth, creating them globally (I think I understand that term by now) 
//so I can refer to them outside of the loops later to do some evaluatin'.
  }
}}
//get array[1,2]...array[5,4] and do some operations with them.
for(var player=1;player)如何在一个循环(另一个循环)中创建数组?
代码更新2
正如您所说:“我正在尝试”您可以查看以下代码:

function getTeam(){
    var array = [[1,2,3],[4,5,6],[7,8,9]]; // arrays within arrays
    // array myTeam 
    var myTeam = [[],[],[],[]];
    var playerNames = ["John", "Bert", "Dave", "Milton"]; 
    var ages =[]; 
    var weight = 104;
    // loop over the team arrayadd each player (name, age and weight) to the team  
    for (i=0; i < myTeam.length; i++){            
        // fill the age array in a loop
        for (j=0;j<myTeam.length;j++) {
            ages[j] = 23 + j;            
        }        
        myTeam[i].push([playerNames[i], ages[i], weight]);
    }
    return myTeam;
}
函数getTeam(){ var数组=[[1,2,3],[4,5,6],[7,8,9];//数组中的数组 //阵列myTeam var myTeam=[]、[]、[]、[]、[]; var playerNames=[“约翰”、“伯特”、“戴夫”、“米尔顿”]; var ages=[]; 变量权重=104; //在团队阵列上循环向团队添加每个球员(姓名、年龄和体重) 对于(i=0;i 我可以在执行循环之前创建一个数组。 在每个循环开始时,我可以将一个字符串文本推送到包含player和objective值的数组中。 循环完成后,我可以将数组拆分为多个数组,或者使用正则表达式在一个大数组中计算它们


我还是希望每次都能创建新的阵列——似乎这是一种更通用的方法,学习如何比使用此解决方案对我更有教育意义。

请在电子表格中添加一个屏幕截图或共享链接-如果太大,如果你能制作一个简化版本(玩家少,结果少)会有所帮助这仍然展示了电子表格的结构,并概述了您想要实现的目标。您是对的,“返回”这是一个可怕的转变。我的意思是,我想保存变量,使它们在所有循环运行完毕后仍然可以访问。我将在这里链接电子表格。它只是朋友之间的,所以我在上面使用了一些受版权保护的图像,并且表格是一种其他人可以拍摄和使用的格式rs,所以我担心会遇到一些荒谬的法律问题。我会修改并发布它,但可能需要一到两天的时间。谢谢你的帮助,我会努力理解你的建议和例子!谢谢。我今天会处理这个问题。我是p
var valuesOfPlayers=[];
for (var player=1; player<6; player++){

  // look up certain columns in the spreadsheet and save them to variables
  // you could call a funcntion and return the values you 
  // collected in an array within an array as in the demo above
  valuesOfPlayers[player] = lookupColumnValues(player);

  for(var opponent=1; opponent<6; opponent++){
    if(player!=opponent){
       // save more values to variables
       valuesOfPlayers[player] = addValuesToVar(player);
    }

  for(var row=9; row<24; row++) {
       // if you collect the values in your first and second if clause
       // what other information do you want to collect
       // Please elaborate this part?
  }
}}