深度删除JS对象属性几级 [英] Deleting JS Object Properties a few levels deep

查看:159
本文介绍了深度删除JS对象属性几级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的对象:

var myObj = {
    first: {
        sub: {
            level: "some text",
            level2: "some more text"
        },
        sub2: {
            level3: "Something"
        }
    },
    second: {
        stuff: "More stuff...lots of stuff"
    }
}

我想做的就是说

delete myObj.first.sub.level

但是我不知道正在传递什么,或者我需要走多少深才能删除正确的属性,这意味着它可能仅仅是:

But I won't know what is being passed, or how many levels deep I need to go in order to remove the correct property, meaning it could simply be:

Storage.removeItem('myObj.first'); // This is currently working

或更复杂的东西:

Storage.removeItem('myObj.first.sub2.level3'); // This doesn't work because I'm more than 1 level into the object.

我有点困惑,因为我可以找到键"level3"及其属性"Something",但是我不知道如何正确退后一步才能删除该对象的整个部分.

I'm kind of stuck, because I can get to the point where I have the key "level3" and it's property "Something", but I can't figure out how to back-step correctly in order to delete the full section of that object.

我需要复制它在myObj中的位置,以便删除完整传递的对象.

I need to replicate it's place in myObj so I can delete the full passed object.

'myObj.first.sub.level3'

如果这有意义...

推荐答案

虽然不漂亮,但是您可以使用类似这样的东西:

It's not pretty, but you could use something like this:

function deepDelete(target, context) {
  // Assume global scope if none provided.
  context = context || window;

  var targets = target.split('.');

  if (targets.length > 1)
    deepDelete(targets.slice(1).join('.'), context[targets[0]]);
  else
    delete context[target];
}

deepDelete('first.sub.level3', myObj);

deepDelete('myObj.first.sub2.level3');

在下降之前对其进行修改以测试typeof context[targets[0]] !== 'undefined'可能是一个好主意.您对此有何反应(返回false,throw或其他原因)取决于您的使用方式.

It would probably be a good idea to modify it to test for typeof context[targets[0]] !== 'undefined' before descending. How exactly you react to that (return false, throw, or whatever else) would depend on how you're using it.

这篇关于深度删除JS对象属性几级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆