节点js中lodash中_.filter方法的问题

Problem with _.filter method in lodash in node js

我的 objective 是删除 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 个电子邮件地址,所以如果我是正确的,我有 163 个电子邮件地址可以保留在我的 CSV 中。当我使用函数 testDeleteEmails 时,它会给我 869 个电子邮件地址,这不是我想要的。我是不是用错了 lodash 方法?

知道我必须动态地执行它,因为我必须使用其他列表和 CSV 文件来执行它。

我知道这个功能还没有完成,当 newCSV 数据正确时,我只需要解析数据并将其放入 CSV 文件中。

我认为问题与 Lodash 过滤器无关。 我认为问题出在您的 CSV 文件中。 CSV 文件中可能存在重复的电子邮件地址。 请检查您的 CSV 文件。 您可以使用 Lodash 中的 uniqueBy 函数来检查它。

  const uniqueData = _.uniqBy(data, 'Email of user');

并检查数据和uniqueData的长度。