I have an array called new_svrgrp_member
like this -
new_svrgrp_member = [];
new_svrgrp_member.push({
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN001271"
},{
Member:"m82298s2", MemberClass:"user", Parent:"SVR_ADM_WN001271"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN000868"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN000901"
},{
Member:"v38250s", MemberClass:"user", Parent:"SVR_ADM_WN000903"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN002085"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN001367"
},{
Member:"v38250s", MemberClass:"user", Parent:"SVR_ADM_WN001367"
},{
Member:"d76686g2", MemberClass:"user", Parent:"SVR_ADM_WNR00096"
},{
Member:"s98681s2", MemberClass:"user", Parent:"SVR_ADM_WGR00006"
})
Then I have a FilterMmbr
array like this -
FilterMmbr = [];
FilterMmbr.push({Name: "s98681s2"},{Name: "s98681s"},{Name: "v38250s"},{Name: "SI_VWAdmChk"})
I need to take out all objects from new_svrgrp_member
which match FilterMmbr's
Name
property with new_svrgrp_member's
Member
property.
I used the following code to do that -
for each(Mmbr in FilterMmbr)
{
var removeIndex = new_svrgrp_member.map(function (item) {
return item.Member;
}).indexOf(Mmbr.Name);
~removeIndex && new_svrgrp_member.splice(removeIndex, 1);
}
it removes the objects but with only one match, here is the output I get -
[INFO] New members after filtering...
[INFO] Member:a25346j2 MemberClass:user Parent:SVR_ADM_WN001271
[INFO] Member:m82298s2 MemberClass:user Parent:SVR_ADM_WN001271
[INFO] Member:a25346j2 MemberClass:user Parent:SVR_ADM_WN000868
[INFO] Member:a25346j2 MemberClass:user Parent:SVR_ADM_WN000901
[INFO] Member:a25346j2 MemberClass:user Parent:SVR_ADM_WN002085
[INFO] Member:a25346j2 MemberClass:user Parent:SVR_ADM_WN001367
[INFO] Member:v38250s MemberClass:user Parent:SVR_ADM_WN001367 //Still exists
[INFO] Member:d76686g2 MemberClass:user Parent:SVR_ADM_WNR00096
How do I get rid of all objects with matches and why is there still one object left?
You can use Array.filter
to strip values out of new_svrgrp_member
that match a name in FilterMmbr
(found using Array.some
):
let new_svrgrp_member = [];
new_svrgrp_member.push({
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN001271"
},{
Member:"m82298s2", MemberClass:"user", Parent:"SVR_ADM_WN001271"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN000868"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN000901"
},{
Member:"v38250s", MemberClass:"user", Parent:"SVR_ADM_WN000903"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN002085"
},{
Member:"a25346j2", MemberClass:"user", Parent:"SVR_ADM_WN001367"
},{
Member:"v38250s", MemberClass:"user", Parent:"SVR_ADM_WN001367"
},{
Member:"d76686g2", MemberClass:"user", Parent:"SVR_ADM_WNR00096"
},{
Member:"s98681s2", MemberClass:"user", Parent:"SVR_ADM_WGR00006"
});
let FilterMmbr = [];
FilterMmbr.push({Name: "s98681s2"},{Name: "s98681s"},{Name: "v38250s"},{Name: "SI_VWAdmChk"});
new_svrgrp_member = new_svrgrp_member.filter(m => !FilterMmbr.some(f => f.Name == m.Member));
console.log(new_svrgrp_member);