Recuperação de atributo de vários níveis usando a notação de matriz de um objeto JSON

Eu tenho um problema mentalmente oneroso aqui, onde eu tenho um objeto JSON recuperado usando uma coleção no Backbone. É assim que o objeto se parece:

{
    "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,
}

O que eu quero fazer com esses dados é filtrá-los com base em um atributo específico, como os atributos Venue.Name ou Date (que têm diferentes profundidades no objeto e podem ser mais profundos que dois níveis para alguns dos outros dados) . Eu tenho o seguinte código dentro de uma coleção Backbone para filtrar e retornar uma nova coleção com o conteúdo filtrado adequadamente:

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

Isso me permite especificar em um atributo para qual atributo eu quero filtrar, e o que eu quero que seja igual a, para qualquer profundidade de objeto. O problema é que eu realmente não quero usar "eval" para fazer isso, mas obviamente não posso usar "[Attribute]" para algo como "AwayTeam.TeamID", já que não funcionará.

Alguém sabe de um método que eu possa usar para alcançar essa funcionalidade sem usar eval?

questionAnswers(4)

yourAnswerToTheQuestion