解
感谢vadim。我必须将months[i].anArray[b]
更改为months[i][anArray][b]
我有一个月的数组,其中包含每个月的对象。每个月都有许多属性,包括数组,例如:
months[0].consumptionPerHour
返回24个可以使用months[0].consumptionPerHour[0-23]
我正在尝试创建一个创建表的函数,该表具有表的名称和我希望作为函数参数访问的数组的名称,如下所示:
function tableMaker(tableName, anArray) {
$("#outputs").append(
"<table id='table" + totalTables + "'>"
"<tr id='header" + totalTables + "'><td>" + tableName + "</td>"
);
for(i=0;i<12;i++) {
$("#header" + totalTables).append("<td>" + months[i].shortName + "</td>");
}
for(b=0;b<24;b++) {
$("#table" + totalTables).append(
"<tr id='table" + totalTables + "row" + b + "'><td>" + hours[b] + "</td>"
);
for(i=0;i<12;i++) {
$("#table" + totalTables + "row" + b).append("<td>" + months[i].anArray[b] + "</td>");
}
}
}
出于某种原因,如果我传递一个我知道作为参数存在的属性名称,例如tableMaker('Consumption', consumptionPerHour)
,它只返回以下内容:
Uncaught ReferenceError: consumptionPerHour is not defined
at <anonymous>:1:22
但是,这是通过控制台返回的:
months[0].consumptionPerHour
(24) [0.1567002086212712, 0.1567118400503239, ...]
months[0].consumptionPerHour[0]
0.1567002086212712
答案 0 :(得分:2)
要使用变量访问对象属性,需要使用[]
表示法,变量必须是字符串
所以我认为你想要的是什么
tableMaker('Consumption', 'consumptionPerHour')
然后在功能使用中:
months[i][anArray][b]
答案 1 :(得分:0)
它看起来就像消费者的时间&#39;是一个在几个月内的数组&#39;阵列。而且看起来您可以访问函数中的months数组,而不必将其作为参数传递。所以函数看起来像这样:
function tableMaker(tableName) {
$("#outputs").append(
"<table id='table" + totalTables + "'>"
"<tr id='header" + totalTables + "'><td>" + tableName + "</td>"
);
for(i=0;i<12;i++) {
$("#header" + totalTables).append("<td>" + months[i].shortName + "</td>");
}
for(b=0;b<24;b++) {
$("#table" + totalTables).append(
"<tr id='table" + totalTables + "row" + b + "'><td>" + hours[b] + "</td>"
);
for(i=0;i<12;i++) {
$("#table" + totalTables + "row" + b).append("<td>" + months[i].consumptionPerHour[b] + "</td>");
}
}
}