阅读CSV文件javascript

时间:2016-08-03 06:31:55

标签: javascript csv

我有这样的file.csv:

  

名称,性别//标题

     

John,M

     

路中,M

     

杰西,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&amp; M没有增加(只是增加到1并且不再增加),你能帮我解决这个问题吗? :(

1 个答案:

答案 0 :(得分:1)

您发布的代码在末尾有一些缺少的括号,因此最初没有运行。 您应该检查并忽略空行,还要明确检查男性,以便不计算标题行。

对于每一行,如果性别在你的代码中是“M”的“F”,显然在末尾有一个额外的新行字符(字符代码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>