试图获得低于预期的结果,但它没有进入specialtyMembers
的for循环,知道如何获得与两个数组匹配的预期响应,有任何使用过滤器的方法吗?
main.js
const members = [{
"indexId": "1",
"planId": "8304TDMACC001"
}]
const specialtyMembers = [{
"proxyId": "",
"internalID": "38482099",
"externalID": "",
"indexID": "1",
"gender": "Male"
},
{
"proxyId": "",
"internalID": "38482100",
"externalID": "",
"indexID": "2",
"gender": "Female"
}
]
if (members) {
const membersArray: any = [];
for (const member of members) {
if (specialtyMembers) {
for (const cacheMember of specialtyMembers) {
if (member.indexId === cacheMember.indexID) {
membersArray.push(cacheMember);
}
}
}
}
specialtyMembers = membersArray;
}
预期输出,因为indexId仅与此匹配
[{
"proxyId": "",
"internalID": "38482099",
"externalID": "",
"indexID": "1",
"gender": "Male"
}
]
最佳答案
只需通过 specialtyMembers
数组进行过滤
,如下所示:
specialtyMembers = specialtyMembers.filter(e => members[0].indexId == e.indexID);
注意:您必须将 specialtyMembers
从常量更改为变量。为此,请将此行中的 const
更改为 var
:
var specialtyMembers = [{...}, {...}];
演示:
const members = [{
"indexId": "1",
"planId": "8304TDMACC001"
}];
var specialtyMembers = [{
"proxyId": "",
"internalID": "38482099",
"externalID": "",
"indexID": "1",
"gender": "Male"
},
{
"proxyId": "",
"internalID": "38482100",
"externalID": "",
"indexID": "2",
"gender": "Female"
}
];
specialtyMembers = specialtyMembers.filter(e => members[0].indexId == e.indexID);
console.log(specialtyMembers);
编辑:
如果 members
中有多个元素,您只需创建一个 indexId
数组,如下所示:
var indexIds = members.map(e => e.indexId);
然后将 filter
语句更改为:
specialtyMembers = specialtyMembers.filter(e => indexIds.includes(e.indexID));
演示:
const members = [{
"indexId": "1",
"planId": "8304TDMACC001"
}];
var specialtyMembers = [{
"proxyId": "",
"internalID": "38482099",
"externalID": "",
"indexID": "1",
"gender": "Male"
},
{
"proxyId": "",
"internalID": "38482100",
"externalID": "",
"indexID": "2",
"gender": "Female"
}
];
var indexIds = members.map(e => e.indexId);
specialtyMembers = specialtyMembers.filter(e => indexIds.includes(e.indexID));
console.log(specialtyMembers);
关于javascript - 如何从数组中获取匹配的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54226027/