检查 CSV 标头是否匹配,如果匹配则继续解析,否则停止

Stu*_*919 3 javascript csv jquery papaparse

我目前正在尝试添加一些关于我希望特定 .CSV 格式在继续使用 PapaParse 进行解析之前的描述的验证。

所以我的想法是首先检查标题,看看它们是否等于以下内容:

Extension, company, name

然后继续解析,否则我可以返回一条错误消息,说明格式错误。

所有解析都是使用 PapaParse 完成的。

Ave 对此并不满意,但下面是当前的代码:

var result = [];

$("#CSV-Upload").click(function () {
        $("input[type=file]").parse({
            config : {
                header : true,
                skipEmptyLines : true,
                complete : function (results, file) {
                    console.log("This file done:", file, results);
                    var string = JSON.stringify(results['data']);
                    result.push(string);
                    console.log("CSV Array: " + string);
                }
            },
            complete : function () {
                console.log("All files done!");
            }
        });
        $("#csv-file").val('');
    });
Run Code Online (Sandbox Code Playgroud)

小智 5

如果我理解正确,您想检查标头中是否存在某个键。要使用 papa parse 来执行此操作,我建议使用streaming. 在papa parse中,概念streaming是在解析器读取数据时处理数据。

row基本上,您将检查函数返回的对象中的某些键step。查看以下代码:

var allKeyPresent = false; // Flag

Papa.parse(file, {
    header : true,
    skipEmptyLines : true,
    step: function(row, parser){
        if (!allKeyPresent) { //Only chek if flag is not set, i.e, for the first time
            parser.pause(); // pause the parser
            var first_row_data = row.data[0];
            // Now check object keys, if it match
            if (('Extension' in first_row_data) && ('name' in first_row_data) && ('email' in first_row_data)) {
                //every required key is present
                allKeyPresent = true;

                // Do your data processing here

                parser.resume();
            } else{
                //some key is missing, abort parsing
                parser.abort();
            }

        } else{ // we already match the header, all required key is present

            // Do the Data processing here

        }

    }
});
Run Code Online (Sandbox Code Playgroud)

要了解有关 papa parse 中流式传输的更多信息,请查看。另外,请参阅文档step的配置解释部分中有关该功能的更多信息的更多信息。

我希望这有帮助。如果您有任何其他相关查询,请告诉我。