简体   繁体   English

使用JavaScript将CSV文件存储到数组中

[英]Store a CSV file into an array using JavaScript

I want to store only marks values in an array using JavaScript. 我只想使用JavaScript将marks值存储在数组中。 here is my code: 这是我的代码:

<html>
<head>
<script type = "text/javascript">
    function Upload() {
    var fileUpload = document.getElementById("fileUpload");
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
    if (regex.test(fileUpload.value.toLowerCase())) {
        if (typeof (FileReader) != "undefined") {
            var reader = new FileReader();
            reader.onload = function (e) {
                var lines = e.target.result.split("\n");

                var resul = [];
                var headers = lines[0].split("\t");

                for (var i = 0; i < lines.length; i++) {
                    var obj = {};
                    var currentline = lines[i].split(",");
                    for (var j = 0; j < headers.length; j++) {
                        headers[j] = currentline[j];
                    }

                    resul.push([i, obj]);
                    document.write(" " + resul);
                }
                return resul;
            }
            reader.readAsText(fileUpload.files[0]);
        } else {
            alert("This browser does not support HTML5.");
        }
    } else {
        alert("Please upload a valid CSV file.");
    }
}
</script>

</head>

<body>
<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" onclick = "Upload()" />
<hr />
</body>
</html>

The problem is that I'm getting output as follows: 问题是我得到的输出如下:

0,
[object Object] 0,
[object Object],
1,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object],
3,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object],
3,
[object Object],
4,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object],
3,
[object Object],
4,
[object Object],
5,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object],
3,
[object Object],
4,
[object Object],
5,
[object Object],
6,
[object Object] 0,
[object Object],
1,
[object Object],
2,
[object Object],
3,
[object Object],
4,
[object Object],
5,
[object Object],
6,
[object Object],
7,
[object Object]

I want the output as: 我希望输出为:

[1, 20.248602],
[2, 18.54032],
… etc.,

but I'm not getting where I did wrong. 但我没弄错我做错的地方。 How can I fix it? 我该如何解决? Please help. 请帮忙。

Here is CSV file, which contains: 这是CSV文件,其中包含:

name,marks,rank
a,20.248602,a+
b,18.54032,ko+
c,18.254036,ko+
d,15.217833,ok
e,13.194518,b-
f,17.521723,ko- 

Please modify your for loop like this: 请像这样修改您的for循环:

for (var i = 1; i < lines.length; i++) {
    var obj = {};
    var currentline = lines[i].split(",");
    resul.push([i, currentline[1]]);
}
document.write(" " + resul.join());

There is no need of any nested for loop as far your output is concern 就您的输出而言,不需要任何嵌套的for循环

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM