[英]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]][requestMonth].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.