首页 > 解决方案 > 从javascript中的对象中删除给定条目

问题描述

大家好,我想从一个对象(我也作为参数给出)中删除一个条目(我作为参数给出)。为了更清楚,我将为您提供一些代码。

这是我要从中删除条目的对象:

const register = {
    aap :[{condition: {aap:'aap'}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};

我要删除的条目如下所示:{aap:'aap'}

然后我会像这样调用函数myfunction(register,{aap:'aap'})

在上述情况下,从寄存器中删除给定的条件对象。

现在这是我自己建造的:

const register = {
    aap :[{condition: {aap:'aap'}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};



function hallo(register,condition){
    const objKeys = [];

    for(key in register){
        objKeys.push(key);
    }

    objKeys.forEach(function(el){
       console.log(register[el]);
    })

}

hallo(register);

我想出了如何获得一些我可以用来删除的结果:

[ { condition: { aap: 'aap' }, func: 'fun' } ]
[ { condition: { aap1: 'aap1' }, func: 'fun' },
  { condition: { aap2: 'aap2' }, func: 'fun' } ]

但是我仍然没有弄清楚如何删除与我在函数中给出的条目相匹配的条目。

长话短说。我想要一个包含 2 个参数的函数。一个参数是寄存器(我想从中删除的对象),第二个参数是我想删除的条件。

返回函数后,想要的结果应该是:

const register = {
    aap :[{condition: {}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};

寄存器减去我想要删除的条件。

标签: javascriptobject

解决方案


您可以通过迭代对象的所有键并检查键是否在value其中并删除对象中的此键来采用递归方法。

继续嵌套对象。

function remove(object, value) {
    Object.keys(object).forEach(key => {
        if (key in value && object[key] === value[key]) {
            delete object[key];
            return;
        }
        if (object[key] && typeof object[key] === 'object') {
            remove(object[key], value);
        }
    });
    return object;
}

const register = { aap: [{ condition: { aap: 'aap' }, func: 'fun' }], aap1: [{ condition:  {aap1: 'aap1' }, func: 'fun' }, { condition: { aap2: 'aap2' }, func: 'fun' }] };

console.log(remove(register, { aap: 'aap' }));
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读