使用来自.CSV的数据和JavaScript

时间:2013-11-22 14:28:13

标签: javascript jquery csv

我有一个.csv文件,看起来像:

 oS,browName,browVer,timeCanvas,timeSvg
 Windows,Firefox,25.0,0.25,1.23
 Windows,Opera,12.16,0.572,1.465

我想做一个函数来计算timeCanvas和timeSvg的算术平均值:

 for (int i = 0; i < maxrow; i++)
{
 if(oS=Windows)
 {
  if(browName=FireFox
   {
     if(browVer=25.0)
      {
       a=a+1;
       timeC=timeC+timeCanvas
       timeS=timeS+timeSvg
      }
     }
    }
   ...
 }

我搜索了我的问题,我找到的解决方案只有jquery-csv 0.7和toObjects方法(http://code.google.com/p/jquery-csv/)&gt;我想知道这个libaarry有可能做我想要的吗?如果有一些很好的例子(无法找到自己)??

............................................... ...........................

编辑:

所以我尝试了vadim解决方案,但它没有工作,我不知道我做了什么hwat。这是代码。

<script type="text/javascript" src="jquery-1.3.2.js"></script>
    <script type="text/javascript">

function draw(){

var a = 0,
    timeC = 0,
    timeS = 0,
meanCFf=0,
meanSFf= 0;

$.get('test1.csv').done(function(data) {
var i, 
    lines = data.split('\n'),
    line = lines[0].split(','),
    oS = line.indexOf('oS'),
    browName = line.indexOf('browName'),
    browVer = line.indexOf('browVer'),
    timeCanvas = line.indexOf('timeCanvas'),
    timeSvg = line.indexOf('timeSvg'); 
for(i=1; i<lines.length; i++) {
    line = lines[i].split(',');
    if(line[oS] === 'Windows') {
        a++;
        timeC += parseFloat(line[timeCanvas], 10);
        timeS += parseFloat(line[timeSvg], 10);
    }
}
});
    meanCFf = timeC/a;
meanSFf = timeC/a;
var os1 = document.getElementById("osInfo1");
os1.innerHTML = "Twoja średnia  to: " + meanCFf;
var os2 = document.getElementById("osInfo2");
os2.innerHTML = "Twój sytem operacyjny to: " + meanSFf;
  }
</script>
</head>
<body onload="draw()">
    <p id="osInfo1"></p>
    <p id="osInfo2"></p>
</body>

看起来循环不起作用因为a始终为零。

2 个答案:

答案 0 :(得分:0)

使用jQuery,您可以执行以下操作:

JavaScript(script.js)

$(function() {
  var a = 0,
      timeC = 0,
      timeS = 0;
  $.get('test1.csv').done(function(data) {
      var i, 
          lines = data.split(/\r\n|\n/),
          line = lines[0].split(','),
          oS = line.indexOf('oS'),
          browName = line.indexOf('browName'),
          browVer = line.indexOf('browVer'),
          timeCanvas = line.indexOf('timeCanvas'),
          timeSvg = line.indexOf('timeSvg');
      for(i=1; i<lines.length; i++) {
          line = lines[i].split(',');
          if(line[oS] === 'Windows' && line[browName] === 'Firefox' && line[browVer] === '25.0') {
              a++;
              timeC += parseFloat(line[timeCanvas], 10);
              timeS += parseFloat(line[timeSvg], 10);
          }
      }

      $('#osInfo1').html("Twoja średnia  to: " + timeC/a);
      $('#osInfo2').html("Twój sytem operacyjny to: " + timeS/a);
  });
});

<强> HTML

<!DOCTYPE html>
<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1>CSV Test</h1>
    <div id="osInfo1"></div>
    <div id="osInfo2"></div>
  </body>

</html>

答案 1 :(得分:0)

您可以使用javascript手动获取文件夹,然后尝试手动解析它,或者您可以使用PHP。 PHP有一些很棒的库,用于处理标准的CSV。

每次我亲自创建一个简单的PHP JSON服务,而不是经常使用它来完成它所需的功能,该服务只需执行csv所需的功能并提供数据。然后,您可以使用Javascript AJAX检索数据,从而允许您照常执行所需的代码。

总的来说,我认为你会发现这对你来说意味着更少的代码,并且在网上有更多的文档来支持PHP CSV和JSON服务。

当然,这假设你有一台拥有PHP的服务器。