javascript - 节点js中lodash中_.filter方法的问题
问题描述
我的目标是删除 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');
并检查数据和唯一数据的长度。
推荐阅读
- flutter - 如何使用导航来设置状态()另一个屏幕?
- kubernetes - 是否可以使用不包括某些资源的 Kubernetes 命名空间配额
- excel - 在条件格式中设置货币
- python-3.x - Python文件写入csv,行写入问题
- docker - 带有 ShellScript 的 Dockerfile 中的上下文
- istio - Istio 操作员安装错误:unmarshalerDecoder:未知字段“策略”
- linux - 换行符不添加到 shell 变量的末尾
- django - django 模板访问 url kwargs
- asp.net-core - Azure DevOps 部署到网站虚拟应用程序(虚拟文件夹)
- java - Get generated ID in JPA in pre persist method before commit?