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');