Как создать набор через JSON (AngularJS)

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

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

Что именно не так? Какой текущий вывод, какие-либо ошибки?

Rafael 31.10.2018 20:32

Я получаю разные ошибки, но дело в том, что я не уверен, что это вообще должно работать, поэтому я ищу правильный способ подойти к этой задаче. Насколько я понимаю, unique работает на одном цикле ng-repeat. Здесь я в основном хочу получить результат вложенного запуска ng-repeat, присоединиться к нему, а затем получить из него все уникальные значения.

Zubo 31.10.2018 20:50
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
49
2

Ответы 2

Предполагая, что ваша индексация верна, вы должны использовать теги 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>

Другие вопросы по теме