我有一个文件,其中包含电子邮件地址列表和CSV文件,其中包含一些地址列表以及更多信息,如姓名,职位等。
我试图通过检查csv文件的每一行来比较这两个文件。如果csv文件行中的电子邮件与电子邮件列表中的任何电子邮件匹配,则该行将被推送到另一个阵列。
我想出了以下代码:
function getCsvMatches(){
var holder = [];
var sep = "\n";
var match_holder = "";
var csv = document.getElementById("rawdata2").value;
var csv_array = csv.split('\n');
var email_list = document.getElementById("rawdata1").value;
var emaillist_array = email_list.split('\n');
var csv_length = csv_array.length;
var emaillist_length = email_list.length;
for (var i = 0; i < csv_length; i++){
var email_line = csv_array[i].match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi)[0];
//alert(email_line) //this works as expected
if(emaillist_array.indexOf(email_line)>= 0){
holder.push(csv_array[i]);
}
}
for (var n = 0; n < holder.length; n++) {
matched_holder += holder[n];
matched_holder += sep;
}
document.extractor3.rawdata3.value = match_holder;
document.extractor3.match_count.value = holder.length;
document.extractor1.emaillist_count.value = emaillist_length;
document.extractor2.csv_count.value = csv_length;
}
这里有更多代码和html的jsbin链接:http://jsbin.com/fabumexucu/edit?output
问题是如果我在Firefox中运行脚本,我得到TypeError: csv_array[i].match(...) is null
。但是,如果取消注释alert
功能,我会收到csv文件中每封电子邮件的提醒。
请告诉我我做错了什么。感谢。