【问题标题】:Convert Javascript object reference in dot notation into string将点表示法中的 Javascript 对象引用转换为字符串
【发布时间】:2016-09-08 05:23:24
【问题描述】:

给定一个 JS 对象:

var obj = {
            a: {
               b: {
                  c: {}
               }
            }
         };

如何将obj.a.b 转换为字符串"obj.a.b" 以计算已使用的对象数(3)?在这种情况下obj.a.b:3. 我试过''+obj.a.buneval()toSource()toString()for...inObject.key().length,但这不是我想知道的。 我想这是不可能的……但不确定。

例如我为什么要:

function h (o) {
    let a = o.split('.');
    if (a.length > 2) {
        alert('not allowed'); // because obj.a.b > 2
        return;
    } else {
        // because obj.a == 2 -> ok. process with obj.a ..
    }
}

h(obj.a.b);

【问题讨论】:

  • 所以您希望能够输入obj.a.b 并返回"obj.a.b"
  • obj.a.b 这是什么意思?你有一些访问它的代码吗?您是否只想找到b 的深度是多少?这是从哪里来的,为什么还要计算引用?
  • @Mike:是的,没错
  • @hg95 好的,但是为什么你想这样做?只是好奇还是你想解决什么问题?因为如果是后者,确实看起来是个 XY 问题。
  • 你可以用Proxies 做一些疯狂的恶作剧来获得至少每个财产的访问权,但这肯定是一些恶作剧。不是你想要的真实世界代码。

标签: javascript string


【解决方案1】:

How to check the depth of an object? 下已经提供了如何找到对象深度的解决方案。

如果你只是需要将其转换为字符串形式,你可以

> JSON.stringify(obj)
"{"a":{"b":{"c":{}}}}"

【讨论】:

  • 再一次,我不认为 OP 正在寻找对象嵌套的 总深度,而是检查 具体 特定值的深度检索是。
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多