我在javascript中正在进行此迭代吗?

时间:2010-08-20 11:05:14

标签: javascript for-loop iteration

考虑下面的两个实现,

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

以上作品(即)它让我得到了我想要的东西。

我的实现是,

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

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

我正在使用谷歌可视化API来绘制图表,但下面的答案无法解决,

http://jsbin.com/okafa3/edit这是http://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>​

3 个答案:

答案 0 :(得分:3)

完全等效的代码是

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

helios建议的内容也可以使用,除非它不是早期代码的精确表示,因为它会对data.addRows进行多次调用。

答案 1 :(得分:2)

你错过了函数调用的括号:

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

答案 2 :(得分:2)

看来你的方法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
      ]);

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