通过引用另一个对象从数组中删除对象

问题描述 投票:0回答:1

我有一个名为new_svrgrp_member的数组,如下所示-

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"
})

然后我有一个像这样的FilterMmbr数组-

FilterMmbr = [];
FilterMmbr.push({Name: "s98681s2"},{Name: "s98681s"},{Name: "v38250s"},{Name: "SI_VWAdmChk"})

我需要从new_svrgrp_member中取出所有与FilterMmbr's Name属性相匹配的new_svrgrp_member's Member属性。

我使用以下代码执行此操作-

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);
}

它删除对象,但只有一个匹配项,这是我得到的输出-

[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

如何清除所有具有匹配项的对象,为什么还剩下一个对象?

javascript ecmascript-5
1个回答
1
投票

您可以使用Array.filterArray.filter中剥离与new_svrgrp_member中的名称匹配的值(使用FilterMmbr找到):

© www.soinside.com 2019 - 2024. All rights reserved.