gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:36:38 26 4
gpt4 key购买 nike

我有一个名为 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 匹配的所有对象 成员 属性。

我使用以下代码来做到这一点 -

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

如何删除所有匹配的对象以及为什么还剩下一个对象?

最佳答案

您可以使用Array.filternew_svrgrp_member 中删除与 FilterMmbr 中的名称匹配的值(使用 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);

关于javascript - 通过引用另一个数组从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com