У меня есть такой JSON:
{
"list": [{
"name": "1",
"type": ["A", "B"],
},
{
"name": "2",
"type": ["A", "D", "C"],
},
{
"name": "3",
"type": ["D", "E"],
}
]
}
Я хотел бы вывести набор типов (то есть уникальные значения типов в list), например:
Types: A, B, C, D, E
Я пытаюсь сделать что-то вроде
<div ng-repeat = "element.type in list | unique='type'">
{{element.type}}
</div>
но не могу понять это правильно. Как правильно это сделать?
Я получаю разные ошибки, но дело в том, что я не уверен, что это вообще должно работать, поэтому я ищу правильный способ подойти к этой задаче. Насколько я понимаю, unique работает на одном цикле ng-repeat. Здесь я в основном хочу получить результат вложенного запуска ng-repeat, присоединиться к нему, а затем получить из него все уникальные значения.






Предполагая, что ваша индексация верна, вы должны использовать теги span, поскольку они являются встроенными элементами:
<span>Types: </span>
<span ng-repeat = "element.type in list | unique='type'">
{{element.type}}<span ng-if = "$index < list.length - 1">,</span>
</span>
Вы можете сделать это самостоятельно один раз в контроллере, что также будет более производительным (фильтры запускаются довольно часто):
let set = new Set();
list.forEach(el => {
el.type.forEach(t => {
set.add(t);
});
});
$scope.uniqueTypes = Array.from(set);
<span ng-repeat = "type in uniqueTypes">
{{type}}
</span>
Что именно не так? Какой текущий вывод, какие-либо ошибки?