javascript - 如何从数组中获取不匹配的元素?

标签 javascript arrays angular typescript

所以我收到的请求包含我从缓存中获取的rxInfos和specialMembers,因此如果rxInfos.indexID匹配,则进行一些处理,否则如果rxInfos indexID存在但由于某种原因与缓存indexID不同,我想将该indexID推送到不匹配的IndexIDs 数组。就像第二个元素一样,rxInfos.indexID 与任何特殊成员都不匹配,因此应该推送到不匹配的IndexID。

使用下面的代码将所有特殊成员 ID 推送到不匹配的数组。

main.ts

 for (const member of specialMembers) {
        for (const rxInfo of this.rxInfos) {
            if (member.indexID === rxInfo.indexID) {
                this.indexIDs.push(rxInfo.indexID);
                proxyMember = member;
                if (!member.dateOfBirth) {
                    statusDesc = "member dateOfbirth not found";
                    return Promise.reject(this.errorHandler(request, statusDesc));
                }
                const requestBody: any = this.buildSingleRequestBody(proxyMember, rxInfo);
                const requestObject = this.specialtyQuestionRequest(requestBody);
                this.requestArray.push(requestObject);
            } else {
                this.mismatchIndexIDS.push(rxInfo.indexID);
                this.indexIdMismatchCounter++;
            }
        }
    }

数据

"rxInfos": [
      {
            "drugNdc": "10101",
            "rxNumber": "14556459709",
            "firstFillIndicator": "N",
            "sourceSystem": "TBS",
            "indexID": "RPT0ifQ"
        },
      {
            "drugNdc": "101",
            "rxNumber": "145945000709",
            "firstFillIndicator": "N",
            "sourceSystem": "TBS",
            "indexID": "GJhQ1MrQnZkTFRR"
        }
    ]

    "specialyMembers":[
      {
        "dob":"12-12-1970"
        "firstName": "jimmy",
        "lasteName": "shew",
         "indexID": "RPT0ifQ"
      },
      {
         "dob":"18-10-1970"
        "firstName": "Timmy",
        "lasteName": "Doug",
         "indexID": "GJhQ1MrQ"
      },
        {
         "dob":"17-06-1981"
        "firstName": "John",
        "lasteName": "owascar",
         "indexID": "GJhQ1MrTGDSRQ"
      }
      ]

最佳答案

const memberMatched = member => {
  return rxInfos.find(rxInfo => rxInfo.indexID === member.indexID)
}

const mismatchIndexIDS = specialMembers.reduce((res, member) => {
  return memberMatched(member) ? res : res.concat(member.indexID)
}, [])

const indexIdMismatchCounter = mismatchIndexIDS.length

const matchedMembers = specialMembers.reduce((res, member) => {
  const rxRecord = memberMatched(member)
  return rxRecord ? res.concat({rxRecord, member}) : res
}, [])

// DO YOUR STUFF WITH MATCHED MEMBERS

关于javascript - 如何从数组中获取不匹配的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53510354/

相关文章:

javascript - 是否可以从 Firefox for Android 扩展中截取屏幕截图?

javascript - 根据另一个数组中的值删除嵌套对象数组中的值

arrays - 查找所有其他元素出现两次的数组中出现一次的元素(不使用 XOR)

javascript - 将新创建的 dom 元素添加到一个空的 jQuery 对象

javascript - 使用 firebase 的即时模式自动登录

javascript - 在 IE 上存储 cookie (11)

javascript - jQuery parseHTML 和 parseXML 行为

Angular:如何从 .t​​s 文件呈现 HTML?

angular - 无法从 API 下载 blob 作为 Angular 7 中的文件

javascript - Three.js 不适用于 Angular 5