【问题标题】:Problem with _.filter method in lodash in node js节点js中lodash中_.filter方法的问题
【发布时间】:2021-02-04 09:27:59
【问题描述】:

我的目标是删除 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 文件中。

【问题讨论】:

  • 请提供一个更简单的例子
  • 是的对不起,我要编辑我的帖子

标签: javascript node.js arrays lodash mailchimp


【解决方案1】:

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

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

并检查数据和uniqueData的长度。

【讨论】:

  • 好吧,当我使用 _.uniqBy 时,它说我的数组中有 883 个数据
  • 等一下,问题似乎来自duplicateEmails,因为它说我在执行此操作时只有 1 个 uniqueData:const uniqueData2 = _.uniqBy(duplicateEmails, "Email of user")
  • 但是当我在做 console.log(duplicateEmails 时,我有 797 封电子邮件,它们不是重复的
  • data的长度为960
  • 重复电子邮件集合中的对象是否具有“用户电子邮件”键?我不这么认为
猜你喜欢
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
相关资源
最近更新 更多