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?