是否可以定义object
键的“路径”?
例如,如果您有object
:
var obj = {
hello: {
you: "you"
}
}
我想像这样选择它:
var path = "hello.you";
obj[path]; //Should return "you"
(显然不起作用,但有办法吗?)
是否可以定义object
键的“路径”?
例如,如果您有object
:
var obj = {
hello: {
you: "you"
}
}
我想像这样选择它:
var path = "hello.you";
obj[path]; //Should return "you"
(显然不起作用,但有办法吗?)
快速代码,你可能应该让它防错;-)
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'));
在这里你可以测试-> http://jsbin.com/ehayav/2/
mz
你可以试试这个:
var path = "hello.you";
eval("obj."+path);
你不能这样做,但你可以编写将遍历嵌套对象的函数
function get(object, path) {
path = path.split('.');
var step;
while (step = path.shift()) {
object = object[step];
}
return object;
}
get(obj, 'hello.you');