Многоуровневый поиск атрибутов с использованием записи массива из объекта JSON
У меня здесь проблема с психическим утомлением, когда я получил объект JSON, извлеченный с использованием коллекции в Backbone. Вот как выглядит объект:
{
"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,
}
Что я хочу сделать с этими данными, это отфильтровать их на основе определенного атрибута, такого как атрибуты Venue.Name или Date (которые имеют разную глубину в объекте и могут быть глубже двух уровней для некоторых других данных). , Я получил следующий код внутри коллекции Backbone для фильтрации и возврата новой коллекции с соответствующим фильтрованием содержимого:
findWhere: function (Attribute, Value)
{
return new Project.Collections.Fixtures(this.filter(function (fixture)
{
return eval('fixture.attributes.' + Attribute) == Value;
}));
}
Это позволяет мне указать в атрибуте, по какому атрибуту я хочу фильтровать, и чему я хочу, чтобы он был равен для любой глубины объекта. Проблема в том, что я действительно не хочу использовать "eval" чтобы сделать это, но, очевидно, я не могу использовать «[Атрибут]» для чего-то вроде «AwayTeam.TeamID», поскольку это не сработает.
Кто-нибудь знает метод, который я могу использовать для достижения этой функциональности без использования eval?