如何使用字符串来定位对象?

时间:2017-10-25 00:12:44

标签: javascript

我正在尝试使用object定位str = "a.b.c"

更改a.b.c
a = { b: { c: { d: 'working' } } } function go(o, v) { console.log(str[v]) } str = "a.b.c" // reference to an object go(str, "d")


我拥有什么

a = {
  b: {
    c: {
      d: 'working'
    }
  }
}

function go(o, v) {
  console.log(a.b.c[v])
}


str = "a.b.c"
go(str, "d")




它是如何工作的

docker pull dgraziotin/lamp && docker run -t -i -p 80:80 -p 3306:3306 --name osxlamp dgraziotin/lamp

3 个答案:

答案 0 :(得分:1)

您可以在"."上拆分字符串,然后在结果数组上使用reduce()函数迭代钻取到您的对象:



var a = {
      b: {
        c: {
          d: 'working'
        }
      }
    };

    function go(o, v) {
      return (o + "." + v).split(".").reduce((y,z) => y[z], this);
    }

    var result = go('a.b.c', 'd');
    console.log(result);




答案 1 :(得分:0)

您想使用名为object-path的库:

https://www.npmjs.com/package/object-path

这样您就可以通过以下方式访问该值:

str = "a.b.c" 
objectPath.get(a, str);

答案 2 :(得分:0)

您可以尝试使用 eval()功能

https://www.w3schools.com/jsref/jsref_eval.asp



a = { b: { c: { d: 'working' } } }

function go(o, v) {
  console.log(eval(str)[v])
}

str = "a.b.c" 
go(str, "d")