Фильтр, Карта, Уничтожение объектов могут выполнять работу:
const y = [{
"score": "1200.65",
"num_games": "160",
"wins": "110",
"year": "2013"
},
{
"score": "705.23",
"num_games": "34",
"wins": "21",
"year": "2014"
},
{
"score": "467.12",
"num_games": "77",
"wins": "30",
"year": "2015"
}
];
const res = y.filter(o => o.year == 2014).map(({
year: x,
score: y
}) => ({
x,
y
}))
console.log(res)
Вам не нужен вложенный шаблон здесь, так как управление TreeView будет заботиться о вложении он на основе DataType, которого он требует. Поэтому просто определите Два HierarchicalDataTemplates для Типа Альбома и Художника и один обычный DataTemplate для Вашего класса Дорожки.
<HierarchicalDataTemplate DataType="{x:Type local:Artist}" ItemsSource="{Binding Albums}" >
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Album}" ItemsSource="{Binding Tracks}" >
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:Track}">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>