如何使用对象属性作为函数参数?

时间:2018-01-25 13:12:32

标签: javascript function oop

感谢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

2 个答案:

答案 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>");
    }
  }
}