2016-08-03 80 views
0

我已经FILE.CSV这样的CSV文件:阅读的JavaScript

姓名,性别//头

约翰,男

卢克,男

杰西,F

我想用javascript计算总的M和F,所以我试过这个:

<script type="text/javascript"> 
    $(function() { 
     $("#upload").bind("click", function() { 
     var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/; 
     var F = 0; 
     var M = 0; 

    if (regex.test($("#fileUpload").val().toLowerCase())) { 
     if (typeof (FileReader) != "undefined") { 
      var reader = new FileReader(); 
      reader.onload = function (e) { 
       var table = $("<table />"); 
       var rows = e.target.result.split("\n"); 
       for (var i = 0; i < rows.length; i++) { 
        var row = $("<tr />"); 
        var cells = rows[i].split(","); 
        var gender = cells[1]; 
        if (gender === "F"){ 
          F++; 
        }else{ 
          M++; 
        } 
        for (var j = 0; j < cells.length; j++) { 
         var cell = $("<td />"); 
         cell.html(cells[j]); 
         row.append(cell); 
        } 
        table.append(row); 
       } 
       $("#dvCSV").html(''); 
       $("#dvCSV").append(table); 
       window.alert(pos); 
      } 
      reader.readAsText($("#fileUpload")[0].files[0]); 
     } 
    }); 
}); 
</script> 

VAR˚F&中号不增加(只增加至1,也不再增加),你可以帮我解决这个问题? :(

+0

那么,只有F增加了? –

+0

在给定示例中逗号之后(有时候之前)是否有空格?如果是的话,你必须考虑到它们。 – Arnauld

+0

@JaromandaX对不起更新的球员:'' – jill182

回答

1

您发布的代码在结尾处有一些缺失的括号,因此一开始没有运行 您应该检查并忽略空行,并且明确检查是否为男性,以便不计算标题行。

对于每一行,如果代码中的性别为“F”的“M”,显然末尾还有一个额外的新行字符(字符代码13),请尝试gender.length,它会显示2.我们可以检查通过使用gender.charAt(0)=== 'F'(或 'M')

我修改了代码,它工作

<html> 
<head> 
    <title>Test</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("#upload").bind("click", function() { 
      var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/; 
      var F = 0; 
      var M = 0; 

      if (regex.test($("#fileUpload").val().toLowerCase())) { 
       if (typeof (FileReader) != "undefined") { 
        var reader = new FileReader(); 
        reader.onload = function (e) { 
         var table = $("<table />"); 
         var rows = e.target.result.split("\n"); 
         for (var i = 0; i < rows.length; i++) { 
          if (rows[i].trim() != '') { 
           var row = $("<tr />"); 
           var cells = rows[i].split(","); 
           var gender = cells[1]; 
           if (gender.trim().charAt(0) === "F") { 
            F++; 
           } else if (gender.trim().charAt(0) === "M") { 
            M++; 
           } 
           for (var j = 0; j < cells.length; j++) { 
            var cell = $("<td />"); 
            cell.html(cells[j]); 
            row.append(cell); 
           } 
           table.append(row); 
          } 
         } 
         $("#dvCSV").html(''); 
         $("#dvCSV").append(table); 
         window.alert("F: " + F + ", M:" + M); 
        } 
        reader.readAsText($("#fileUpload")[0].files[0]); 
       } 
      } 
     }); 
    }); 
</script> 
</head> 
<body> 
    <input type="file" id="fileUpload" /> 
    <input type="button" id="upload" value="Upload" /> 
</body> 
</html>