Abrufen von Attributen mit mehreren Ebenen unter Verwendung der Array-Notation aus einem JSON-Objekt

Ich habe hier ein psychisch anstrengendes Problem, bei dem ich ein JSON-Objekt mithilfe einer Auflistung in Backbone abgerufen habe. So sieht das Objekt aus:

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

Was ich mit diesen Daten tun möchte, ist, sie basierend auf einem bestimmten Attribut zu filtern, z. B. den Attributen Venue.Name oder Date (die unterschiedliche Tiefen des Objekts aufweisen und für einige der anderen Daten tiefer als zwei Ebenen sein können). . Ich habe den folgenden Code in einer Backbone-Sammlung, um eine neue Sammlung mit entsprechend gefiltertem Inhalt zu filtern und zurückzugeben:

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

Auf diese Weise kann ich in einem Attribut für jede Objekttiefe angeben, nach welchem ​​Attribut gefiltert werden soll und mit welchem ​​Attribut es gleich sein soll. Das Problem ist, dass ich "eval" wirklich nicht verwenden möchte, aber offensichtlich kann ich "[Attribute]" nicht für etwas wie "AwayTeam.TeamID" verwenden, da es nicht funktioniert.

Kennt jemand eine Methode, mit der ich diese Funktionalität erreichen kann, ohne eval zu verwenden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage