Javascript递归搜索

时间:2015-07-17 12:38:29

标签: javascript recursion

我在递归搜索方面遇到了一些麻烦。我想返回找到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个工作,这使得它更加奇怪。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

删除此if语句中的'typeof'可修复我的代码。

if(typeof result !== false)