【发布时间】:2019-01-25 21:45:06
【问题描述】:
如果任何 rxNumber 与数据匹配,我在 rxDetails 上有一个循环,如果没有按原样返回项目,则添加新字段 payAmount,所以在我下面的 forEach 它没有返回 5 个元素,它总是缺少 rxNumber 15131503 作为回报,知道这里的实施有什么问题吗?我注意到的是 forEach 正在其中一个元素上跳过循环,不知道为什么。
数据
const rxDetails = [
{
"drugName": "TRILIPIX 135MG CPDR",
"rxNumber": "15131523",
"lldIndicator": "N"
},
{
"drugName": "GILENYA 0.5MG CAPS",
"rxNumber": "15131519",
"lldIndicator": "N"
},
{
"drugName": "JAKAFI 5MG TABS",
"rxNumber": "15131503",
"lldIndicator": "Y"
},
{
"drugName": "FENOFIBRATE MICRONIZED 134MG CAPS",
"rxNumber": "15131510",
"lldIndicator": "N"
},
{
"drugName": "LIPITOR 10MG TABS",
"rxNumber": "15131506",
"lldIndicator": "N"
},
{
"drugName": "KEFLEX 750MG CAPS",
"rxNumber": "15131522",
"lldIndicator": "N"
}
]
const data = [{
"drugName": "TRILIPIX 135MG CPDR",
"rxNumber": "15131523",
"lldIndicator": "N",
"payAmount": "10"
},
{
"drugName": "GILENYA 0.5MG CAPS",
"rxNumber": "15131519",
"lldIndicator": "N",
"payAmount": "8"
},
{
"drugName": "METFORMIN",
"rxNumber": "15425789",
"lldIndicator": "Y",
"payAmount": "0.50"
},
{
"drugName": "FENOFIBRATE MICRONIZED 134MG CAPS",
"rxNumber": "15131510",
"lldIndicator": "N",
"payAmount": "2.56"
},
{
"drugName": "LIPITOR 10MG TABS",
"rxNumber": "15131506",
"lldIndicator": "N",
"payAmount": "7.76"
},
{
"drugName": "KEFLEX 750MG CAPS",
"rxNumber": "15131522",
"lldIndicator": "N",
"payAmount": "17.88"
}
]
main.ts
private getDrugsLastPrice(rxDetails: any, data: any) {
let isDrugFound: boolean = false;
const drugsArray: any = [];
rxDetails.forEach((item: any) => {
for (const element of data) {
if (item.rxNumber === element.rxNumber) {
isDrugFound = true;
const singleDrug = {
rxNumber: item.rxNumber,
lldIndicator: item.lldIndicator,
drugName: item.drugName,
payAmount: element.payAmount
};
drugsArray.push(singleDrug);
}
}
if (!isDrugFound) {
drugsArray.push(item);
}
});
return drugsArray;
}
getDrugsLastPrice(rxDetails,data);
预期输出
[{
"drugName": "TRILIPIX 135MG CPDR",
"rxNumber": "15131523",
"lldIndicator": "N",
"payAmount": "10"
},
{
"drugName": "GILENYA 0.5MG CAPS",
"rxNumber": "15131519",
"lldIndicator": "N",
"payAmount": "8"
},
{
"drugName": "JAKAFI 5MG TABS",
"rxNumber": "15131503",
"lldIndicator": "Y"
},
{
"drugName": "FENOFIBRATE MICRONIZED 134MG CAPS",
"rxNumber": "15131510",
"lldIndicator": "N",
"payAmount": "2.56"
},
{
"drugName": "LIPITOR 10MG TABS",
"rxNumber": "15131506",
"lldIndicator": "N",
"payAmount": "7.76"
},
{
"drugName": "KEFLEX 750MG CAPS",
"rxNumber": "15131522",
"lldIndicator": "N",
"payAmount": "17.88"
}
]
【问题讨论】:
-
但如果没有找到,我仍然会根据布尔值
isDrugFound推送该元素 tp drugArray,因为如果 rsNumber 不匹配,我仍然必须返回该元素而没有payAmount字段 -
对我来说很好用...jsfiddle.net/u5qw2Ltp/1
标签: javascript arrays typescript foreach