繁体   English   中英

如何在javascript中比较2个相同列表中的对象值

[英]how to compare objects values in 2 identical lists in javascript

我在 mongo db 中有两个保存报告的集合,在报告中有列表匹配,所以我想要的是在生产报告上运行,对于 ech 一个检查暂存报告并检查匹配是否长度相同,如果 personId 和addressId 也是一样的...

有没有好的方法可以做到这一点?

我想出了这样的事情:

db.production_reports.find({}).forEach((prodRep)=> { 
      db.reports.find({_id: prodRep._id}).forEach((stagingRep)=> { 
         if (prodRep.matches.length == stagingRep.matches.length) {
             prodRep.matches.forEach((match)=> {
                 var res = stagingRep.matches.filter(element => element.personId == match.personId && element.addressId == match.addressId);
                 if (res) {
                     print("yay")
                 } else {
                     print("nay")
                 }
             });
         }
      });
});

我希望每个报告的脚本告诉我“是的,所有匹配项都相等”,或者打印具有不相等匹配项的 reportId

谢谢

我会起草这样的东西:

return new Promise((resolve) => {
  const data = {
    // contains an array of _id of missing production_reports
    missing: [],
    different: [],
  };

  // Look at each entry in production_reports
  db.production_reports.find({})
    .cursor()
    .eachAsync(async (x) => {
      // get the similar data on reports
       const copy = await db.reports.find({
         _id: x._id,
       });

       // If the data doesn't exists into reports
       if (!copy || !copy.length) {
          data.missing.push(x._id);

          return;
       }

       // If it exists, compare the inner values

       // if the size isn't the same, it's obviously different
       if (x.matches.length !== copy.length) {
         data.different.push(x._id);

         return;
       }

       // Check every element of match one by one
       if (x.matches.some(y => !copy.matches.some(z => z.personId === y.personId))) {
          data.different.push(x._id);
       }
    }, {
      // How many items do we look at same time
      parallel: 250,
    }, () => {
      // When we are done processing all items
      resolve(data);
    });
});

注意:它不会为您提供报告中存在但 production_reports 中不存在的缺失文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM