我在进行递归搜索时遇到了一些麻烦。我想返回找到ID的区块。
这是我的数据:
{
"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"
}]
}]
}
但是相反,它返回的是false。这是我的代码:
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数据的最后一部分。这段代码实际上在我的6个用例中有5个起作用,这使其变得更加奇怪。
任何帮助,将不胜感激。
最佳答案
在if语句中删除“ typeof”可修复我的代码。
if(typeof result !== false)