问题描述
我的目标是删除CSV中的每一行,因为它们已经是mailchimp中的电子邮件地址。
async function testDeleteEmails(listID,csvFileLocation){
csvContent = fs.readFileSync(csvFileLocation,"utf-8");
let { data } = Papa.parse(csvContent,{ header: true,skipEmptyLines: true });
let duplicateEmails = await compareArrayEmailsMailchimpAndCSV (fetchMailchimpMembersEmails(listID),getArrayEmailsFromLocalCSV(csvFileLocation))
let newCSV = _.filter(data,function(row){
return _.includes(duplicateEmails,row["Email of user"])
})
console.log(newCSV)
}
testDeleteEmails("MY LIST ID",".../myCSV.csv")
compareArrayEmailsMailchimpAndCSV
是一项功能,用于获取所有重复的电子邮件地址(mailchimp中的电子邮件地址和我的CSV中的电子邮件地址)的数组
我在mailchimp中有1058个电子邮件地址。 CSV中有960个电子邮件地址,而函数compareArrayEmailsMailchimpAndCSV
给了我797个电子邮件地址,因此,如果我正确的话,我的CSV中有163个电子邮件地址可以保留。当我使用功能testDeleteEmails
时,它给了我869个电子邮件地址,这不是我想要的。我错误地使用了lodash方法吗?
知道必须动态处理,因为我必须处理其他列表和CSV文件。
我知道函数还没有完成,当newCSV
数据正确时,我只需要解析数据并将其放入CSV文件即可。
解决方法
我认为问题与Lodash过滤器无关。 我认为问题出在您的CSV文件中。 CSV中可能有重复的电子邮件地址。 请检查您的CSV文件。 您可以使用Lodash中的uniqueBy函数进行检查。
const uniqueData = _.uniqBy(data,'Email of user');
并检查数据和uniqueData的长度。