使用字符串定义对象键的“路径”

时间:2013-03-13 09:40:31

标签: javascript jquery

是否可以定义object密钥的“路径”?

例如,如果您有object

var obj = {
    hello: {
        you: "you"
    }
}

我想这样选择:

var path = "hello.you";
obj[path]; //Should return "you"

(显然不起作用,但有办法吗?)

3 个答案:

答案 0 :(得分:4)

快速代码,您可能应该使其成为错误证据; - )

var obj = {
    hello: {
        you: "you"
    }
};

Object.prototype.getByPath = function (key) {
  var keys = key.split('.'),
      obj = this;

  for (var i = 0; i < keys.length; i++) {
      obj = obj[keys[i]];
  }

  return obj;
};

console.log(obj.getByPath('hello.you'));

在这里你可以测试 - &gt; http://jsbin.com/ehayav/2/

MZ

答案 1 :(得分:3)

你可以试试这个:

var path = "hello.you";
eval("obj."+path);

答案 2 :(得分:1)

你不能这样做,但你可以编写将遍历嵌套对象的函数

function get(object, path) {
   path = path.split('.');
   var step;
   while (step = path.shift()) {
       object = object[step];
   }
   return object;
}

get(obj, 'hello.you');