JavaScript encuentra por valor profundo en un objeto / matriz anidado

Hola , Tengo un problema al devolver un objeto en mi función, digamos que tengo un 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": {}
}];

lo que quiero es una función (en javascript puro) que pueda encontrar un objeto con una clave y un valor específicos, y he creado una función pero simplemente no funciona bien. , mi función:

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);
            }
        }
    }
}

¿No puedo ver lo que he hecho mal?

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta