0

I wanted to use the Set Type, because i thought it can´t have the same value twice. But my 'coords' Set gets the same value more than once. What can i do, to get just unique values?

ngOnInit()

ngOnInit(): void {
    this.coords = new Set<Coordinate>();

    this.coordinatesService.coordinates.subscribe((coordinates: Coordinate[]) => {
        coordinates.forEach((coordinate) => {
            this.addMarker(coordinate);
        });
    });
}

addMarker()

addMarker(coordinate: Coordinate): void {

        if (!this.coords.has(coordinate)) {
            this.coords.add(coordinate);

            L.marker([coordinate.latitude, coordinate.longitude], this.icon)
                .bindPopup('<b>Found location</b><br>' + coordinate.label)
                .addTo(this.citiesLayerGroup);
        }
    }

CoordinatesService

In the Service I added an Interface.

    export interface Coordinate {
    latitude: number;
    longitude: number;
    label: string;
}
Patman
  • 1
  • 5
  • 1
    This does not work because your first and second coordinate has is a different reference. `set.has()` only checks if the reference is the same. If I were you I would use a normal array and `array.includes()` and then check for your unique properties (In your case the long + lat) – Yingrjimsch Oct 28 '21 at 13:23
  • I checked and `some()` does the trick in my opinion better... https://stackblitz.com/edit/angular-ivy-umewkv?file=src%2Fapp%2Fapp.component.ts – Yingrjimsch Oct 28 '21 at 13:35

0 Answers0