Да, Icepickle прав. Рекурсия - лучший способ справиться с этим. Вот решение:
var testObj = {
"one": {
"1": {"msg": "msg1"},
"2": {"msg": "msg2"},
"3": {"msg": "msg3"}
},
"two": {
"1": {"msg": "msg4"},
"2": {"msg": "msg5"},
"3": {"msg": "msg6"}
}
};
function follow(obj, n){
if (n == 1) {
return Object.keys(obj).map(function(k){
return obj[k];
});
}
else return Object.keys(obj).map(function(k){
return follow(obj[k], n-1);
});
}
console.log(follow(testObj, 2));
http://jsbin.com/boqekunaba/edit?js,console,output
Как написано, это вернет второй уровень, например JSON дерева. Вы можете изменить n на 3, чтобы узнать, что произойдет. Результатом являются массивы, чтобы сохранить это кратким. Это результат использования метода map, который является ярлыком для записи цикла for. Если мы просто хотим объекты, нам придется немного подкорректировать этот код.
Вы хотите пройти путь по своим свойствам? – Icepickle
@Icepickle Да. – user1692342