Recuperación de atributos de múltiples niveles usando notación de matriz de un objeto JSON

Tengo un problema mental que me agobia aquí, donde tengo un objeto JSON recuperado utilizando una colección en Backbone. Así es como se ve el objeto:

{
    "MatchID": "00000001",
    "Date": "1970-01-01T00:00:00.000Z",
    "OriginalID": "",
    "Stage": {
        "StageNumber": "0",
        "StageType": "Stage Type"
    },
    "Round": {
        "RoundNumber": "0",
        "Name": "Round Name"
    },
    "Leg": "1",
    "HomeTeam": {
        "TeamID": "0",
        "Name": "Home Team Name"
    },
    "AwayTeam": {
        "TeamID": "0",
        "Name": "Away Team Name"
    },
    "Venue": {
        "VenueID": "0",
        "Name": "Venu Name"
    },
    "Referee": null,
}

Lo que quiero hacer con estos datos es filtrarlos según un atributo en particular, como los atributos Venue.Name o Date (que son diferentes profundidades en el objeto y pueden ser más profundos que dos niveles para algunos de los otros datos) . Tengo el siguiente código dentro de una colección Backbone para filtrar y devolver una nueva colección con el contenido filtrado adecuadamente:

findWhere: function (Attribute, Value)
{
    return new Project.Collections.Fixtures(this.filter(function (fixture)
    {
        return eval('fixture.attributes.' + Attribute) == Value;
    }));
}

Esto me permite especificar en un atributo el atributo por el que quiero filtrar y lo que quiero que sea igual para cualquier profundidad de objeto. El problema es que realmente no quiero usar "eval" para hacer esto, pero obviamente no puedo usar "[Atributo]" para algo como "AwayTeam.TeamID", ya que no funcionará.

¿Alguien sabe de un método que pueda usar para lograr esta funcionalidad sin usar eval?

Respuestas a la pregunta(4)

Su respuesta a la pregunta