簡體   English   中英

JavaScript數組符號到對象符號

[英]JavaScript array notation to object notation

我正在嘗試通過對象表示法(而不是使用數組表示法)訪問此javascript對象中的金額值。 我將如何訪問變量。

javascript對象稱為: allTargetsData ,其中包含一個名為originalTarget的對象,該對象分為:Year,showroom,month,如圖所示。

在此處輸入圖片說明

以下函數用於訪問這些對象,但是我的變量符號表示法:monthTargetData在語法上存在漏洞,因為我正試圖從數組符號轉換它。

function printFullReport(){
    var requestYear = $('#changeYear').val();
    var requestMonth = parseInt($('#changeMonth').val());

    var url = '/fpdf/requests/print_fullreport1.php?year=' + requestYear + '&month=' + getMonth(requestMonth);

    console.log(allTargetsData);
    //var showroomNo = 29;
    var showrooms = [1, 3, 4, 24, 27, 29, 34, 36, 37, 8, 21, 25, 26, 28, 31, 33, -1];
    for (var i = 0; i <showrooms.length; i++){

        var showroomData = allTargetsData.monthlyDetail[showrooms[i]];
        var lastYear = allTargetsData.realFigure.requestYear - 1;

        var showroomname = showroomData.showroom_name;
        var monthActualData = showroomData.total;
        var monthTargetData = allTargetsData.originalTarget.requestYear.[showrooms[i]].requestMonth.amount;
        var priorYearData = JSON.stringify(allTargetsData.realFigure[requestYear - 1][showrooms[i]]['figures'][requestMonth]);
        var priorYearToDateData = showroomData.ly_ytd;
        var yearToDateTargetData = showroomData.ytd_target;
        var yearToDateActualData = showroomData.ytd;

        var calculation1 = showroomData.ytd - showroomData.ly_ytd;
        var YTDVsPYTDSalesCurrencyData = Math.round(calculation1*10000)/100;

        var calculation2 = parseFloat(showroomData.ytd - showroomData.ly_ytd)/showroomData.ly_ytd;
        var YTDVsPYTDSalesinPercentData = Math.round(calculation2*10000)/100;

        var calculation3 = showroomData.ytd - showroomData.ytd_target;
        var YTDVsYTDTargetinSalesCurrencyData = Math.round(calculation3*100)/100;

        var calculation4 = parseFloat(showroomData.ytd - showroomData.ytd_target)/parseFloat(showroomData.ytd_target);
        var YTDVsYTDTargetinPercentData = Math.round(calculation4*10000)/100;
        console.log(showroomname);
    }
}

我以前通過此聲明訪問它:

var monthTargetData = JSON.stringify(allTargetsData.originalTarget[requestYear][showrooms[i]][requestMonth]['amount']);

由於使用變量來訪問數據,您不能這樣做-不能與點符號一起使用。 關於該行,您唯一可以更改的是amount 它可能是

allTargetsData.originalTarget[requestYear][showrooms[i]][req‌​uestMonth].amount

您代碼中的錯誤就在這里(不確定這些錯誤是否更多)

allTargetsData.originalTarget.requestYear.[showrooms[i]].requestMonth.amount;
                                        ^^^ dot and bracket notation doesn't work

我相信是這樣,因為括號表示法將對象視為數組

不,不是,數組除索引外沒有其他(字符串)鍵。 您將永遠無法使用something['string']訪問數組元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM