TypeError:无法读取属性";0“;来自未定义的Javascript

TypeError:无法读取属性";0“;来自未定义的Javascript,javascript,multidimensional-array,Javascript,Multidimensional Array,我正在尝试运行以下代码,但出现以下错误: TypeError: Cannot read property "0" from undefined. (line 111) 所讨论的问题是: perCampaignRows.push([STRATEGISTS[i][1], 这是完整的代码 var perCampaignRows = []; for (var i = 0; i < STRATEGISTS.length; i++) { var accountIterator = Mcc

我正在尝试运行以下代码,但出现以下错误:

TypeError: Cannot read property "0" from undefined. (line 111)
所讨论的问题是:

perCampaignRows.push([STRATEGISTS[i][1],
这是完整的代码

var perCampaignRows = [];

for (var i = 0; i < STRATEGISTS.length; i++) {
    var accountIterator = MccApp.accounts()
        .withCondition("ManagerCustomerId = '" + STRATEGISTS[i][0] + "'")
        .get();

    var mccAccount = AdWordsApp.currentAccount();

    while (accountIterator.hasNext()) {
        var account = accountIterator.next();
        MccApp.select(account);
        Logger.log("Checking " + account.getName() + " - CID: " + account.getCustomerId());
        var campaignIterator = AdWordsApp.campaigns()
            .withCondition("Status = ENABLED")
            .get();

        var activeCampaigns = campaignIterator.totalNumEntities();

        if (activeCampaigns === 0) {
            Logger.log("No Active Campaigns");
            perCampaignRows.push([
                STRATEGISTS[i][1],
                STRATEGISTS[i][2],
                account.getCustomerId(), 
                account.getName(), 
                activeCampaigns, 
                '', 
                '',
                '',
                '',
                '',
                '',
                '',
                '',
                '',
                '',
            ]);
        }
        else {
            Logger.log(activeCampaigns + " Active Campaigns");
        }

        while (campaignIterator.hasNext()) {
            var campaign = campaignIterator.next();
            Logger.log("Campaign: " + campaign.getName());
            var mobileBid = checkPlatform(campaign);
            var isRotatingEvenly = checkAdRotation(campaign);
            var sitelinkData = checkSitelinks (campaign);
            var isUsingMobileAds = checkAds(campaign);
            var callExtData = checkCallExtensions(campaign);
            var isUsingAdSchedule = checkAdSchedules(campaign);
            var isSomewhatLimitedByBudget = checkBudgetLimitations(campaign);

            if (isUsingAdSchedule && isSomewhatLimitedByBudget) {
                var warnAboutBudgetAndSchedule = "TRUE";
            }
            else {
                var warnAboutBudgetAndSchedule = "FALSE";
            }

            Logger.log(perCampaignRows);

            perCampaignRows.push([
                STRATEGISTS[i][1],
                STRATEGISTS[i][2],
                account.getCustomerId(), 
                account.getName(), 
                activeCampaigns, 
                campaign.getName(), 
                mobileBid, 
                isRotatingEvenly,
                sitelinkData[0],
                sitelinkData[1],
                sitelinkData[2],
                isUsingMobileAds,
                callExtData[0],
                callExtData[1],
                warnAboutBudgetAndSchedule
            ]);
        }
    }
}
有什么想法吗

编辑

根据要求,我补充说:

Logger.log(STRATEGISTS.length);
Logger.log(STRATEGISTS);
第一个记录了51,第二个记录了预期的变量


谢谢,

多亏了Guffa,我意识到即使我把push语句分成了不同的行,它也被视为一行。我原以为问题出在我的.push实现上,但实际上问题出在一个被推送的变量上

结果我错过了一次返程

var callExtData = checkCallExtensions(campaign);
因此callExtData为空,因此未定义


谢谢

如果你得到了这个错误,为了好玩,可以做一个
控制台.log(战略家)
,因为引擎告诉你这个对象不存在。它被从上下文中删除了。。。很可能是在使用后声明的,也可能是在另一个作用域中声明的。完整代码段:您有一条多行语句,因此在语句的第一行会收到错误消息。可能未定义的候选项是
sitelinkData
callExtData
,因为您使用索引0访问它们。请尝试将
callExtData[0]
sitelinkData[0]
替换为类似
null
的内容,以识别罪犯。或者,尝试在语句之前将
callExtData[0]
sitelinkData[0]
分配给一个新变量,并使用该变量缩小有关错误行号的可疑代码。
var callExtData = checkCallExtensions(campaign);