У меня проблемы с рекурсивным поиском. Я хочу, чтобы вернуть блок идентификатор был найден вJavascript рекурсивный поиск
Это мои данные:.
{
"rows": [{
"columns": [{
"id": "iE1YMSahu",
"rows": [{
"columns": [{
"id": "VJBjVrfP"
}, {
"id": "NJb1234A",
"rows": [{
"columns": [{
"id": "VJBjVXXX"
}, {
"id": "NJb1234B"
}]
}]
}]
}]
}, {
"id": "EJnASD-v",
"rows": [{
"columns": [{
"id": "VJBjVYYY"
}]
}]
}]
}]
}
Он должен возвращаться
{
"id": "EJnASD-v",
"rows": [{
"columns": [{
"id": "VJBjVYYY"
}]
}]
}
Но вместо того, чтобы это возвращение ложным. Вот мой код:
function findColumnWithId(obj, id){
for(var i = 0; i < obj['rows'].length; i++){
for(var j = 0; j < obj['rows'][i]['columns'].length; j++){
if(obj['rows'][i]['columns'][j].id == id)
return obj;
if(obj['rows'][i]['columns'][j].hasOwnProperty('rows')){
var result = findColumnWithId(obj['rows'][i]['columns'][j], id);
if(typeof result !== false)
return result;
}
}
}
return false;
}
findColumnWithId(data, 'VJBjVYYY');
Я действительно не уверен, что происходит. Кажется, что он не повторяет последнюю часть данных Json. Этот код действительно работает в 5 из моих 6 случаев использования, что делает его еще более странным. Любая помощь будет оценена по достоинству.
Почему вы пишете 'typeof result! == false'? Что это должно было делать? – Xufox
Welp, теперь я чувствую себя глупо. Удаление типа фиксированного кода (конечно). Я изменил его с 'typeof result! == 'undefined' на проверку false и забыл удалить typeof. Благодарю. – Pozzuh
Вам не хватает идентификатора в объекте первой строки? –