Получение уникального массива из сервиса в Angular

1

У меня есть служба, которая содержит информацию о членах. Одна из переменных здесь - командная строка.

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

Я хотел бы заполнить переменную "команды" в моем компоненте уникальным списком команд в сервисе. Это должно учитывать запись (поэтому я бы использовал toUpperCase()).

Мой сервис:

import { Injectable } from '@angular/core';

@Injectable()
export class UserinfoService
{
    //methods or services
    getMembers()
    {
        return [
            {
                imageUrl: "../assets/images/filler.jpg",
                firstName: "filler",
                lastName: "filler",
                team: "TEAM A",
                number: "+123456798",
                bio: "Lorem ipsum dolor sit amet,...",
                isActive: true
            },
            {
                imageUrl: "../assets/images/filler.jpg",
                firstName: "filler",
                lastName: "filler",
                team: "TEam A",
                number: "+123456798",
                bio: "Lorem ipsum dolor sit amet,...",
                isActive: false
            },
            {
                imageUrl: "../assets/images/filler.jpg",
                firstName: "filler",
                lastName: "filler",
                team: "TEAM B",
                number: "+123456798",
                bio: "Lorem ipsum dolor sit amet,...",
                isActive: true
            },
        ];
    }
    //constructor
    constructor()
    {
    }
}

мой компонент:

import { Component, OnInit } from '@angular/core';
import { UserinfoService } from '../services/userinfo.service';


@Component({
  selector: 'app-teammembers',
  templateUrl: './teammembers.component.html',
  styleUrls: ['./teammembers.component.css']
})
export class TeammembersComponent implements OnInit
{
    //props
    teammembers: any[];
    teams:any[];

    constructor(userinfoService: UserinfoService)
    {
        //getData
        this.teammembers = userinfoService.getMembers();
    }            

  ngOnInit() {
  }
}
  • 0
    this.teams = uniq(this.teammembers.map(member => member.team)) . Вы можете написать uniq самостоятельно или использовать библиотеку.
  • 1
    [...new Set(this.teammembers.map(m => m.team))]
Теги:
angular

1 ответ

1
Лучший ответ

С ES6 вы можете достичь этого в одной строке. Ниже приведен пример:

this.teams = this.teammembers
                 .map(item => item.team)
                 .filter((value, index, self) => self.indexOf(value) === index)
  • 1
    Это здорово. Работает отлично. Не могли бы вы объяснить мне, как это на самом деле работает? Спасибо :)
  • 0
    @ user3110254 Здесь вы можете найти документацию: docs.microsoft.com/en-us/scripting/javascript/reference/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню