是否可以定义object
密钥的“路径”?
例如,如果您有object
:
var obj = {
hello: {
you: "you"
}
}
我想这样选择:
var path = "hello.you";
obj[path]; //Should return "you"
(显然不起作用,但有办法吗?)
答案 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');