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

标签 javascript function oop

解决方案

感谢瓦迪姆。我不得不将 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

最佳答案

要使用变量访问对象属性,您需要使用 [] 表示法并且变量需要是字符串

所以我认为你想要的是

tableMaker('Consumption', 'consumptionPerHour')

然后在函数中使用:

months[i][anArray][b]

关于javascript - 如何使用对象属性作为函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48443707/

相关文章:

javascript - 如何从javascript函数调用对象方法

c++ - 指针包装类 - 表现得像一个原始指针

javascript - 将小容器放入大容器中,如果大容器一层有2个小容器(见图)

javascript - 使用jQuery单击页面上的任意位置关闭下拉菜单

c - 在C中返回-1?

r - 如何运行从 eventReactive 内部获取数据并在表中绘制的函数?

python - 调用 Python 函数而不向其传递参数 - animate(i)

javascript - 更新由 jQuery 更改的 Select 的 Angular ngModel

javascript - 如何获取提交表单的输入值

c++ - 在自身内部交换一个对象