Как создать набор через JSON (AngularJS) - PullRequest
0 голосов
/ 31 октября 2018

У меня есть такой 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>

но не могу понять это правильно. Какой правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы можете сделать это самостоятельно один раз в контроллере, что также будет более производительным (фильтры запускаются довольно часто):

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>
0 голосов
/ 31 октября 2018

Предполагая, что ваша индексация правильная, вы должны использовать теги span, поскольку они являются встроенными элементами:

<span>Types: </span>

<span ng-repeat="element.type in list | unique='type'">
  {{element.type}}<span ng-if="$index < list.length - 1">,</span>
</span>
...