如何在JavaScript中推进二维数组的第二维度?

如何在JavaScript中推进二维数组的第二维度?,javascript,arrays,google-sheets,typeerror,Javascript,Arrays,Google Sheets,Typeerror,我有一份球员名单,上面写着 activeRange[x] 其中,x将每天变化 每个x值必须至少有4个以上的后续值(可能多一点)。理想情况下,我希望阵列看起来像: activeRange[x][y] 以下是我到目前为止所做的: var MATCH = AllData[TotalRows][TotalColumns+1]; activeRange[TotNumPlayers].push(MATCH); 这些都位于3个嵌套for循环内 TotNumPlayers 将遍历在开始时声明的给定集(

我有一份球员名单,上面写着

activeRange[x]
其中,x将每天变化

每个x值必须至少有4个以上的后续值(可能多一点)。理想情况下,我希望阵列看起来像:

activeRange[x][y]
以下是我到目前为止所做的:

var MATCH = AllData[TotalRows][TotalColumns+1];
activeRange[TotNumPlayers].push(MATCH);
这些都位于3个嵌套for循环内

TotNumPlayers 
将遍历在开始时声明的给定集(有点像23)。一旦完成,则

TotalRows 
将迭代,然后最终

TotalColumns
我遇到以下错误:

TypeError: Cannot find function push in object mitch
mitch是activeRange[0]的值。我一直盯着这个方向看太久了,所以任何帮助都将不胜感激

编辑:在下面插入代码: 请忽略所有评论。我复制/粘贴了昨天用来执行不同功能的代码。 这是我第二次在这个网站上发帖,所以试图把这个怪物格式化成漂亮的样子听起来很吓人。希望这足够好。

这就是activeRange的声明和初始化方式

var activeRange = new Array();
for (var b=0; b<=lastRow-2; b++){
    activeRange[b] = sheetRANK.getRange(b+2,1).getValue();
}
var-activeRange=new-Array();

对于(var b=0;b,根据您的评论,您需要一个更像这样的结构

var activeRange = [
    {
      name: 'mitch',
      otherData: [
        10,
        11,
        12, 
        13
      ]
    },
    {
      name: 'viper',
      otherData: [
        //values
      ]
    }
]
您可以通过
activeRange[0]访问它。其他数据[2]


要添加它,只需将其推入子数组
activeRange[0]。otherData.push(newValue)

尝试思考可以使用哪种数据结构来简化您的生活。对于这种特殊情况,您有一个要将某些数据与之关联的玩家列表。您可能会使用以下结构:

activeRange = [
  {
    name: 'mitch',
    data: []
  }
]
当您想要更新数据时,只需调用
activeRange[0].data.push(someData)

activeRange
是一个播放器数组,每个播放器由一个具有某些属性(名称、数据等)的对象表示。
调用
activeRange[0]
将产生数组中的第一个播放器,并且
activeRange[0]。数据
将产生与该播放器相关的数据,然后您可以根据需要对其进行操作(
push
pop
,等等)

因此,请澄清,
activeRange
是一个播放器列表,并且
activeRange[x]
生成一个对象?举一个activerange数组中的示例会有所帮助。错误告诉我们,您不能推入名为“mitch”的对象,因为它不是数组。对象结构将有助于澄清
activerange
的数组结构,请@Anchor activerange[x]中的所有值是字符串。例如:
activeRange[0]=mitch
activeRange[1]=Viper
,等等。我在getRange()中使用了for循环。getValue()生成数组。您正试图调用字符串上的
push
,这就是为什么您会得到一个非常有意义的错误,但是我如何用我已有的实现它?(我更新了主要帖子以包含我当前的代码)。我甚至不知道从哪里开始……如果不知道输入数据是什么样子以及预期的输出是什么,就不可能说。老实说,我认为您在发布的代码中过于复杂了,并且只使用了数组(对象也非常有用)。这看起来可能需要做很多工作,但我会在记住这里发布的一些评论的情况下重写整个过程。首先对javascript对象进行一些研究,明确您的输入是什么以及您想要的输出是什么。不要放弃!我更愿意让这一简单部分正常工作,因为其余的部分都可以e工作得很好。自从我发布这个问题以来,我已经对对象做了一些研究,我将在这里尝试利用它们。我想指出,实际上,正如预期的那样,程序的每一个其他部分都有功能,我只是在数据映射方面遇到了问题。我将取一个x数量的名称数组。我想要这些n中的每一个ames需要4个元素来添加更多数据(如果你愿意的话,一个数组的数组,这就是为什么我首先尝试2D数组的原因)。首先COMMENTSo数组[x]will=playername。x是1到50之间的任意值。这部分工作正常,我可以收集名称并将其放入数组中。接下来我要做的是将y个元素添加到它们的每个名称中,这样数组[x][y]这就是我所想的。这样说,例如x=3='Viper'和y=2='1180',我可以在电子表格上取Viper的位置,然后取他的y值,并将其放在他旁边的列中。(不完全正确,但距离足够近)第二条评论现在我有另一个问题要问你。既然你知道这一点。既然我更愿意使用对象,我已经尝试过:
var array=[{data:[]}];
,所以我应该使用array[].data[]对吗?我用我的名字列表填充array[]。现在当我尝试
array[number].data.push(VALUE)
时,我得到了“cannotcallmethodpush of undefined”这正是我需要的!我只是不知道如何在我的实际代码中实现它(我对JavaScript非常陌生,事实上,这是我第一个使用它的项目!)谢谢你的回答!
activeRange = [
  {
    name: 'mitch',
    data: []
  }
]