在对象中定义一个函数,并将变量作为函数的一部分

卡尔_S

我试图在一个对象中定义一个函数,其中要处理的函数部分基于一个变量。在下面的代码中,如何将我*dynamicValue*保存为的当前值myColumn

  var viewColumns = [0];
  var count = 0;
  var dataCount = 3;
  var total = 0;
  while (count < dataCount) {
    var myColumn = count + 1;
    var viewColumnDescription = {
        calc: function (dt, row) {
          return dt.getValue(row, *dynamicValue*);
        },
        type: "number",
        role: "annotation"
      };
    viewColumns.push(myColumn);
    viewColumns.push(viewColumnDescription);
    count += 1;
  }

请注意,我已经为 dataCount 硬编码了一个值,以便在示例部分中定义所有变量,但在我的实际代码中,该值当前更改为 1 到 3 之间的数字。以后也可能更多,所以我希望能够使用循环来定义项目。

在这种情况下,结果对象应该就像我这样做一样:

viewColumns = [0,
      1, {
        calc: function (dt, row) {
          return dt.getValue(row, 1);
        },
        type: "number",
        role: "annotation"
      },
      2, {
        calc: function (dt, row) {
          return dt.getValue(row, 2);
        },
        type: "number",
        role: "annotation"
      },
      3, {
        calc: function (dt, row) {
          return dt.getValue(row, 3);
        },
        type: "number",
        role: "annotation"
      },
      {
        calc: function (dt, row) {
          return 0;
        },
        label: "Total",
        type: "number",
      },
      {
        calc: function (dt, row) {
          return 'Total: ' + (dt.getValue(row, 1) 
                           + dt.getValue(row, 2) 
                           + dt.getValue(row, 3));
        },
        type: "string",
        role: "annotation"
      }
    ];

如果dataCount是 2 而不是 3,所有对的引用都dt.getValue(row, 3)将被删除。希望一旦我知道第一部分,我就可以弄清楚如何让最后一个函数计算所有可用行的总数。

这将用于使用 Google Visualization API 创建图表。

法比奥·洛利

myColumnviewColumnDescriptionvar变成let. 替换*dynamicValue*myColumn

或者,如果您不想使用let,则必须使用闭包来确保 myColumn 的值存储在适当的范围内...

如果你不使用 let - 或者你没有把它放在一个闭包中,所有的viewColumnDescription函数都会看到myColumnvalue = 3

示例let- 请注意,我仅在绝对必要的情况下使用它。

  var viewColumns = [0];
  var count = 0;
  var dataCount = 3;
  var total = 0;
  while (count < dataCount) {
    let myColumn = count + 1;
    let viewColumnDescription = {
        calc: function (dt, row) {
          return dt.getValue(row, myColumn);
        },
        type: "number",
        role: "annotation"
      };
    viewColumns.push(myColumn);
    viewColumns.push(viewColumnDescription);
    count += 1;
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何选择一个将数组作为其构造函数一部分的对象?

R - 定义一个函数,它不是将参数识别为对象,而是作为调用的一部分

如何在 OCaml 中输出一个空元组作为函数的一部分?

在作为回调一部分的嵌套函数中传递或访问变量

Javascript - 更改作为另一个变量定义一部分的变量值

如何通过一个环境变量作为命令的一部分

是否可以将Groovy闭包定义为变量传递给函数以执行,而另一个变量作为传递的调用的一部分?

如何使用函数参数作为变量的一部分?

粒子JS –调用作为对象一部分的函数

当对象是另一个变量的一部分时,在对象内部使用对象

作为类函数一部分的 SQL 查询中的 PHP 变量未按预期工作

如何剪切变量的一部分并将其放入另一个变量

在 Python 中的函数内用作变量名一部分的参数

有没有一种方法可以将属性添加到函数中作为函数定义的一部分?

使用变量作为另一个变量名的一部分

Django使用模板变量的值作为另一个变量名的一部分

切下字符串并将其作为函数参数的一部分

从注册表中捕获作为键名一部分的GUID,并将其转换为变量

使用变量作为语句的一部分

取一个char数组的一部分并将其放入字符串中

在主体卸载中调用该函数时有效,但在作为另一个函数的一部分调用时不起作用

将$ .AJAX容纳在函数内,并将参数用作“数据”参数的一部分

如何编写一个删除一部分字符串的C函数?

保留数组的第一个元素作为序列的一部分

查找多个作为一个的一部分

如何将一个UIViewController作为屏幕的一部分

使用已定义的变量作为R中路径名的一部分

不删除行作为函数的一部分-python

作为函数的一部分,如何将小数转换为等效时间?