2016-08-03 65 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>