节点js

问题描述

我的目标是删除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的长度。