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

时间:2015-09-20 05:20:17

标签: 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 

将遍历在开头声明的给定集合(有点像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();
}

这是功能。

function getTotalScore(activeRange, w) {
    Logger.clear()
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheetWAR = ss.getSheetByName('WAR');
    var sheetRANK = ss.getSheetByName('RANK');

    var AllData = sheetRANK.getDataRange().getValues();
    Logger.log('First');
    for (var TotNumPlayers = 0; TotNumPlayers <= activeRange.length; TotNumPlayers++) {
        Logger.log('Second');
        var f = 0;
        for (var TotalColumns = 0; TotalColumns <= AllData[0].length; ++TotalColumns) { // Init n. If n <= the total columns (second dimension), inc n.
            Logger.log('Third');
            for (var TotalRows = 0; TotalRows <= AllData.length; ++TotalRows) { // Init i. If i <= the total rows (first dimension), inc i.
                Logger.log('Fourth');
                //try{ // to avoid errors.
                if (activeRange[TotNumPlayers] != "") {
                    Logger.log('Here?');
                    if (AllData[TotalRows][TotalColumns].valueOf().toUpperCase() == activeRange[TotNumPlayers].toUpperCase()) {
                        Logger.log('How About Here?');
                        var MATCH = AllData[TotalRows][TotalColumns + 1];
                        activeRange.push(TotNumPlayers, MATCH);
                        for (var Calc = 0; Calc <= activeRange[TotNumPlayers].length - 1; Calc++) {
                            var OverallScore = ((activeRange[TotNumPlayers][0] * 1.0) + (activeRange[TotNumPlayers][1] * .75) + (activeRange[TotNumPlayers][2] * .50) + (activeRange[TotNumPlayers][3] * .25));
                            sheetRANK.getRange(activeRange[TotNumPlayers] + 1, 2).setValue(OverallScore);

                            f = f + 1;
                        }
                        if (TotalRows == AllData.length - 1 && TotalColumns == AllData[0].length - 1 && f == 0) {
                            Browser.msgBox('No names matching \'' + activeRange[TotNumPlayers] + '\' found. Check your spelling!');
                            return;
                        }
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

根据您的评论,您需要一个更像这样的结构

var activeRange = [
    {
      name: 'mitch',
      otherData: [
        10,
        11,
        12, 
        13
      ]
    },
    {
      name: 'viper',
      otherData: [
        //values
      ]
    }
]

您可以通过activeRange[0].otherData[2]

访问该内容

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