代码之家  ›  专栏  ›  技术社区  ›  Cade Embery

Javascript使用相对字符串路径遍历另一个字符串路径

  •  3
  • Cade Embery  · 技术社区  · 9 年前

    我有一个如下所示的对象文字

    var object = {
       child:[{
           actualChild:'valueIwantToGet'
           medical:{
               contact:'where i am starting my relative path'
           }
       }]
    }
    

    我的问题是,如何用相对路径字符串更改绝对路径字符串,以获得一个新路径,其中“^”将高于(父)一级

    var absolutePath = 'object.child.0.medical.contact';
    var relativePath = '^.^.actualChild';
    
    //The String i am trying to get
    'object.child.0.actualChild'
    

    我想我需要在“”上拆分字符串然后计算有多少个“^”,然后从绝对路径的末尾“弹出”那么多步骤,但我不确定在不编写大型递归函数的情况下实现这一点的最佳方法

    1 回复  |  直到 5 年前
        1
  •  2
  •   le_m    9 年前

    因为您的路径实际上只是带分隔符的字符串 . ,我会像这样操作它们,例如通过regex:

    function realPath(path) {
        var result = path;
        while ((path = path.replace(/[^\.]*\.\^\./g, '')) !== result) result = path;
        return result;
    }
    

    例子:

    realPath('object.child.0.medical.contact.^.^.actualChild');
    

    结果:

    "object.child.0.actualChild"