可能な方法の簡単なスケッチ:
あなたのデータ:
var data = [
{foo: 1, bar: 2, foobar: [
'a', 'b', 'c'
]},
{foo: 1, bar: 2, foobar: [
'd', 'e', 'f'
]},
{foo: 1, bar: 2, foobar: [
'g', 'h', 'i'
]}
];
var accessor = '1.foobar.2';
ヘルパー関数の使用:
function helper(data, accessor) {
var keys = accessor.split('.'),
result = data;
while (keys.length > 0) {
var key = keys.shift();
if (typeof result[key] !== 'undefined') {
result = result[key];
}
else {
result = null;
break;
}
}
return result;
}
または、すべてのオブジェクトで利用できるようにします:(個人的にはこれは好きではありません...)
Object.prototype.access = function (accessor) {
var keys = accessor.split('.'),
result = this;
while (keys.length > 0) {
var key = keys.shift();
if (typeof result[key] !== 'undefined') {
result = result[key];
}
else {
result = null;
break;
}
}
return result;
};
デバッグ出力:
console.log(
helper(data, accessor), // will return 'f'
data.access(accessor) // will return 'f'
);