大家好,我想从一个对象(我也作为参数给出)中删除一个条目(我作为参数给出)的函数。为了更清楚,我将为您提供一些代码。
这是我要从中删除条目的对象:
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'}],
};
寄存器减去了我想要删除的条件。
最佳答案
您可以通过迭代对象的所有键并检查键是否在 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; }
关于javascript - 从javascript中的对象中删除给定的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55746149/