Итак, у вас есть переменная со значением «key3», и вы хотите знать, как динамически обращаться к этому свойству, основываясь на значении этой строки?
var str = "key3";
data["key1"]["children"][str];
EDIT
Ничего себе, я не могу поверить, что я получил это с первой попытки.В нем могут быть некоторые ошибки, но это работает для вашего тестового примера
LIVE DEMO
var x = data.key1.children.key4;
var path = "data";
function search(path, obj, target) {
for (var k in obj) {
if (obj.hasOwnProperty(k))
if (obj[k] === target)
return path + "['" + k + "']"
else if (typeof obj[k] === "object") {
var result = search(path + "['" + k + "']", obj[k], target);
if (result)
return result;
}
}
return false;
}
var path = search(path, data, x);
console.log(path); //data['key1']['children']['key4']