localização javascript por valor em um objeto / matriz aninhada

Olá , Tenho um problema ao retornar um objeto em minha função, digamos que tenho um objeto:

var elements = [{
    "fields": null,
    "id_base": "nv_container",
    "icon": "layout",
    "name": "container",
    "is_container": true,
    "elements" : [
        //another elements set here
    ]
}, 
{
    "id_base": "novo_example_elementsec",
    "name": "hello",
    "icon": "edit",
    "view": {}
}];

o que eu quero é uma função (em javascript puro) que pode encontrar um objeto com uma chave e um valor específicos, e eu criei uma função, mas ela simplesmente não está funcionando bem? , minha função:

function findNested(obj, key, value) {
    //Early return
    if (obj[key] === value) {
        console.log( 'before return' ); //until here . its fine
        return obj; //not working
    } else {
        for (var i = 0, len = Object.keys(obj).length; i <= len; i++) {
            if (typeof obj[i] == 'object') {
                this.findNested(obj[i] , key, value);
            }
        }
    }
}

Eu simplesmente não consigo ver o que fiz de errado?

obrigado.

questionAnswers(1)

yourAnswerToTheQuestion