JavaScript制作循环

时间:2014-02-02 11:20:04

标签: javascript json

我的javascript代码中有这个块:

    {
        type: 'number',
        label: 'AAA',
        calc: function (dt, row) {
            return (dt.getValue(row, 1) == 'AA') ? dt.getValue(row, 2) : null;
        }
    }

值'AA'是硬编码的,我需要重新编写它以循环这组值(AA,BB,CC,...)。

按顺序编写,它会运行如下:

var view = new google.visualization.DataView(data);
        view.setColumns([0, {
            type: 'number',
            label: 'AA',
            calc: function (dt, row) {
                return (dt.getValue(row, 1) == 'AA') ? dt.getValue(row, 2) : null;
            }
        }, {
            type: 'number',
            label: 'BB',
            calc: function (dt, row) {
                return (dt.getValue(row, 1) == 'BB') ? dt.getValue(row, 2) : null;
            }
        }, {
            type: 'number',
            label: 'CC',
            calc: function (dt, row) {
                return (dt.getValue(row, 1) == 'CC') ? dt.getValue(row, 2) : null;
            }
        }]);

我尝试使用此代码执行此操作,但我不知道它为什么不起作用:

var colEvn = ["AA","BB","CC"];

$viewObj = new Object();
    for (var j = 0, m = colEvn.length; j < m; j++) {

       view.type = 'number';
       view.label = colEvn[j];
       view.calc = function (dt, row) {
            return (dt.getValue(row, 1) == colEvn[j]) ? dt.getValue(row, 2) : null;
       }

    }

并使用收集的对象:

var view = new google.visualization.DataView(data);
    view.setColumns([0, $viewObj]);

我该怎么办?提前谢谢!


我改变了我的代码:

function viewFunc(j) {
     return function() { return (dt.getValue(row, 1) == colEvn[j]) ? dt.getValue(row, 2) : null; };
    }
    var viewObj = new Object();

    for (var j = 0, m = colEvn.length; j < m; j++) {
        viewObj.type = 'number';
        viewObj.label = colEvn[j];
        viewObj.calc = viewFunc(j);
     }




    var view = new google.visualization.DataView(data);
    view.setColumns([0, viewObj]);

它给了我错误 - &gt; “dt未定义”

0 个答案:

没有答案