【问题标题】:Am i doing this iteration right in javascript?我在javascript中做这个迭代吗?
【发布时间】:2010-08-20 11:05:13
【问题描述】:

考虑下面的两个实现,

data.addRows([
  ['2004', 1000],
  ['2005', 1170],
  ['2006', 660],
  ['2007', 1030]
]);

上述工作(即)它得到了我想要的。

我的实现是,

 for (var i = 0; i < 10; i++) {
        data.addRows['row'+i,i];
    }

这是一个有效的 for 循环还是我做错了什么?

我正在使用google可视化api绘制图表,但下面的答案不起作用,

http://jsbin.com/okafa3/edithttp://code.google.com/apis/visualization/documentation/gallery/areachart.html 的副本

<html>
  <head>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Year');
        data.addColumn('number', 'Sales');


       for (var i = 0; i < 10; i++) {
        data.addRows(['row'+i,i]);
    }

          var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, {width: 400, height: 240, title: 'Company Performance',
                          hAxis: {title: 'Year', titleTextStyle: {color: '#FF0000'}}
                         });
      }
    </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>​

【问题讨论】:

  • addRows 将期待数组数组,而您只传递数组。

标签: javascript for-loop iteration


【解决方案1】:

完全等效的代码是

var rows = [];
for (var i=0; i<10; i++) {
   rows.push(['row'+i, i]);
}
data.addRows(rows);

helios 的建议也可以使用,只是它不是早期代码的精确表示,因为它会多次调用 data.addRows。

【讨论】:

    【解决方案2】:

    您缺少函数调用的括号:

     for (var i = 0; i < 10; i++) {
            data.addRows(['row'+i,i]);
        }
    

    【讨论】:

    • 天哪,我怎么能错过。无论如何感谢您指出这一点。
    • 至少你的 for 循环是有效的 :)
    • @Pandiya Chendur:不用担心,会发生这样的事情。你很难找到一些你没有注意到明显错误的晦涩错误:)
    【解决方案3】:

    您的方法 addRows 似乎需要一个 [string, int] 数组。因此,您需要这样做:

    for (var i=0; i<10; i++) {
       data.addRows(   // parenthesis for calling a method
          [            // array of
               ['row'+i,i] // [string, int] even if it's only one
          ]);
    

    (为清楚起见添加了空格和输入)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多