我在递归搜索方面遇到了一些麻烦。我想返回找到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"
}]
}]
}
但相反,它会返回假。这是我的代码:
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个工作,这使得它更加奇怪。 任何帮助将不胜感激。
答案 0 :(得分:1)
删除此if语句中的'typeof'可修复我的代码。
if(typeof result !== false)