Javascript 使用jQuery csv解析csv数据

Javascript 使用jQuery csv解析csv数据,javascript,jquery,csv,jquery-csv,Javascript,Jquery,Csv,Jquery Csv,我正在通过csv文件进行解析。我的目标是查找以“A”、“B”开头的名称,并计算出现的次数。以下代码的问题是它在执行循环时从未完成 HTML: 脚本包括: JavaScript: var babyCsv=“Jacob,1,男孩,2010,Isabella,1,女孩,2010,Ethan,2,男孩,2010,Sophia,2,女孩,2010,Michael,3,男孩,2010,Emma,3,女孩,2010,Jayden,4,男孩,2010,Olivia,4,女孩,2010,William,5

我正在通过csv文件进行解析。我的目标是查找以“A”、“B”开头的名称,并计算出现的次数。以下代码的问题是它在执行
循环时从未完成

HTML:

脚本包括:

JavaScript:
var babyCsv=“Jacob,1,男孩,2010,Isabella,1,女孩,2010,Ethan,2,男孩,2010,Sophia,2,女孩,2010,Michael,3,男孩,2010,Emma,3,女孩,2010,Jayden,4,男孩,2010,Olivia,4,女孩,2010,William,5,男孩,2010,Ava,5,女孩,2010,Alexander,6,男孩,2010,Emily,6,女孩,2010,Noah,7,男孩,2010,Abigail,7,女孩,2010,Daniel,8,男孩,男孩,2010,Madison,8,女孩,2010,艾登,9,男孩,2010,克洛伊,9,女孩,2010,安东尼,10,男孩,2010,米娅,10,女孩,2010,约书亚,11,男孩,2010,男孩,2010,男孩,艾迪生,11,女孩,2010,梅森,12,男孩,2010,伊丽莎白,12,女孩,2010,克里斯托弗,13,男孩,2010,埃拉,13,女孩,2010,安德鲁,14,男孩,2010,娜塔莉,14,女孩,2010,大卫,15,男孩,2010,男孩,萨曼莎,15,女孩,2010,马修,16岁,男孩,2010年”;
var数据=$.csv.toArray(babyCsv);
$(“#csv1ButtonRun”)。单击(函数(){
var arrayLength=data.length/4;
var count1=0;
var count2=0;
var i=0;
而(i

您的CSV数据格式不正确,因此您的JS对象没有任何有意义的结构。您应该使用换行符分隔文件中的各个记录(行)。使用逗号分隔单行中的值。例如:

var babyCsv = " Bryan, 1, boy, 2010 \n Isabella, 1, girl, 2010 \n Bobby, 2, boy, 2010 \n Sophia, 2, girl, 2010 \n Nina, 5, girl, 2010 \n Alexander, 6, boy, 2010 \n Aiden, 9, boy, 2010 \n Anthony, 10, boy, 2010";
然后使用适当的方法解析数据并返回2D记录数组。然后数组中的每个条目都对应一个子项,格式如下:

[
    [name1, age1, gender1, year1],
    [name2, age2, gender2, year2],
    ...
];
最后,在循环中,您必须在每次迭代中更新
name
变量的值,以便实际检查每个子项;目前,您在迭代之间不更改
name
的值。这非常适合
for
循环。
$。trim
也可以轻松获得ri尽管jquery csv可能已经做到了这一点,但字符串开头的任何额外空格都不会出现。因此,您的最终代码如下所示:

var babyCsv = "..."; // your data here

var data = $.csv.toArrays(babyCsv);

$(function () {
    $("#csv1ButtonRun").click(function () {

        var count1 = 0;
        var count2 = 0;

        console.log("Num kids: " + data.length);

        for (var i = 0; i < data.length; i++) {
            var name = $.trim(data[i][0]); //name is first column

            if (name[0] == "A") {
                count1++;
            } else if (name[0] == "B") {
                count2++;
            };
        };

        console.log("Kids with A or B names: " + (count1 + count2));
    });
});
var babyCsv=“…”;//此处是您的数据
var数据=$.csv.ToArray(babyCsv);
$(函数(){
$(“#csv1ButtonRun”)。单击(函数(){
var count1=0;
var count2=0;
log(“Num kids:+data.length”);
对于(变量i=0;i

您的CSV数据格式不正确,因此您的JS对象没有任何有意义的结构。您应该使用换行符分隔文件中的各个记录(行)。使用逗号分隔单行中的值。例如:

var babyCsv = " Bryan, 1, boy, 2010 \n Isabella, 1, girl, 2010 \n Bobby, 2, boy, 2010 \n Sophia, 2, girl, 2010 \n Nina, 5, girl, 2010 \n Alexander, 6, boy, 2010 \n Aiden, 9, boy, 2010 \n Anthony, 10, boy, 2010";
然后使用适当的方法解析数据并返回2D记录数组。然后数组中的每个条目都对应一个子项,格式如下:

[
    [name1, age1, gender1, year1],
    [name2, age2, gender2, year2],
    ...
];
最后,在循环中,您必须在每次迭代中更新
name
变量的值,以便实际检查每个子项;目前,您在迭代之间不更改
name
的值。这非常适合
for
循环。
$。trim
也可以轻松获得ri尽管jquery csv可能已经做到了这一点,但字符串开头的任何额外空格都不会出现。因此,您的最终代码如下所示:

var babyCsv = "..."; // your data here

var data = $.csv.toArrays(babyCsv);

$(function () {
    $("#csv1ButtonRun").click(function () {

        var count1 = 0;
        var count2 = 0;

        console.log("Num kids: " + data.length);

        for (var i = 0; i < data.length; i++) {
            var name = $.trim(data[i][0]); //name is first column

            if (name[0] == "A") {
                count1++;
            } else if (name[0] == "B") {
                count2++;
            };
        };

        console.log("Kids with A or B names: " + (count1 + count2));
    });
});
var babyCsv=“…”;//此处是您的数据
var数据=$.csv.ToArray(babyCsv);
$(函数(){
$(“#csv1ButtonRun”)。单击(函数(){
var count1=0;
var count2=0;
log(“Num kids:+data.length”);
对于(变量i=0;i
“它永远不会完成while循环”意味着你有一个无限循环或什么?请更好地描述你的问题。不要使用
文档。写
。如果你只想看到“结果”(它将登录到开发人员控制台。每个浏览器都有一个),请使用DOM构建方法(
var div=document.createElement)('div');div.innerHTML=“…”;document.body.appendChild(div)
及其同类,或jQuery)以将结果注入到pageOne中,既然您说您是javascript新手,您是否真的引用了jQuery?因为如果您不是,整个循环块将永远不会运行。通过引用,我的意思是
src=“path/tojquery.js”
还要确保您有一个ID为“csv1ButtonRun”的可单击元素,否则单击事件将被置若罔闻。或者,J.D.Pace可以编辑他的评论并更正问题。“它永远不会完成while循环”意味着你有一个无限循环还是什么?请更好地描述你的问题。不要使用
document.write
。如果你只想看到“结果”(它将登录到开发控制台。每个浏览器都有一个),请使用DOM构建方法(
var div=document.createElement('div');div.innerHTML=“…”;document.body.appendChild(div)
及其同类,或jQuery),以将结果注入到pageOne中。既然你说你是javascript新手,你真的引用了jQuery吗?因为如果你不是,循环中的整个块将永远不会运行。通过引用,我的意思是
src=“path/tojquery.js”
还要确保您有一个ID为“csv1ButtonRun”的可点击元素,否则点击事件将被置若罔闻。或者,J.D.Pace可以编辑他的评论并更正问题。如果您决定