# Validere duplikater i en liste

**URL:** <https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416>\
**Category:** Generell diskusjon\
**Created:** [desember 16, 2020, 2:44pm UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416 "2020-12-16T14:44:12Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Helge](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.interactcommunity.no/helge/32/42_2.png) [@Helge](https://www.interactcommunity.no/u/Helge)\
**Post date:** [desember 16, 2020, 2:44pm UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/1 "2020-12-16T14:44:12Z")

</div>

Dersom du har en liste over verdier i en funksjon, og du bare ønsker en enkelt av hver verdi, kan du bruke dette eksempelet til å validere dette.

Scripet er som følger:

```
var liste=Funksjon; //dette er din liste over verdier kan være datakilde, webservice eller funksjon
var duplikat=false; //dette er flagget vi reiser dersom det finnes et duplikat

for(var i=0, i<sizeof(liste), i++){ //begynner å telle på 0
	for(var ix=i+1,ix<sizeof(liste), ix++){ //setter ix til å være ett nummer større enn i - slik at den ikke validerer seg selv.
		if(liste[i]==liste[ix]){duplikat=true};    
	};
};

return duplikat;

```

Her looper jeg listen. For hver verdi i listen, looper jeg de neste verdiene i samme liste. Hvis noen av de etterfølgende verdiene matcher, setter jeg flagget “duplikat=true”. Hvis det ikke er match, forblir den false. Jeg vet altså ikke hvor mange matcher jeg får.

Her er tabellen for gjennomgang av en liste med epostadresser. i er den første for-loopen, mens ix er den indre for-loopen. Her har jeg logget epost[i] og epost[ix] for hver loop. For enkelthets skyld har jeg i listen brukt min egen epost med et løpenummer for å gjøre epostene unike. Da blir resultatet slik:

```
epost i nr0 helge@acos.no0 første for-løkke verdi 0
epost ix nr1 helge@acos.no1 indre for-løkke verdi 1
epost ix nr2 helge@acos.no2 indre for-løkke verdi 2
epost ix nr4 helge@acos.no4 indre for-løkke verdi 3
epost ix nr3 helge@acos.no3 indre for-løkke verdi 4
epost ix nr5 helge@acos.no5 indre for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr1 helge@acos.no1 første for-løkke verdi 1
epost ix nr2 helge@acos.no2 indre for-løkke verdi 2
epost ix nr3 helge@acos.no3 indre for-løkke verdi 3
epost ix nr4 helge@acos.no4 indre for-løkke verdi 4
epost ix nr5 helge@acos.no5 indre for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr2 helge@acos.no2 første for-løkke verdi 2
epost ix nr3 helge@acos.no3 indre for-løkke verdi 3
epost ix nr4 helge@acos.no4 indre for-løkke verdi 4
epost ix nr5 helge@acos.no5 indre for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr3 helge@acos.no3 første for-løkke verdi 3
epost ix nr4 helge@acos.no4 indre for-løkke verdi 4
epost ix nr5 helge@acos.no5 indre for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr4 helge@acos.no4 første for-løkke verdi 4
epost ix nr5 helge@acos.no5 indre for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr5 helge@acos.no5 første for-løkke verdi 5
epost ix nr6 helge@acos.no6 indre for-løkke verdi 6
epost i nr6 helge@acos.no6 første for-løkke verdi 6

```

Dette scriptet er universelt, så det kan brukes med alle mulige verdier. Slik det er satt opp nå fungerer den bare med 1-dimensjonelle arrays, men kan nok sikkert brukes for fler-dimensjonelle hvis man klarer å indeksere dem riktig.

Håper dette kan være nyttig for deg også 🙂

---

<div class="post-metadata">

**Author:** ![oddveig](https://avatars.discourse-cdn.com/v4/letter/o/cab0a1/32.png) [@oddveig](https://www.interactcommunity.no/u/oddveig)\
**Post date:** [februar 22, 2023, 12:44pm UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/2 "2023-02-22T12:44:36Z")

</div>

Jeg er ikke så erfaren med datakildebruk, men jeg prøver meg.

Jeg har fått til å liste ut verksemder som hører til et kommunalområde, men jeg skulle gjerne blitt kvitt duplikater. Jeg har prøvd å gjøre noe med scriptet over, men jeg vet ikke helt hvor/hvordan det skal inn for å fungere. Noen med tips?

 ![bilde](https://canada1.discourse-cdn.com/flex036/uploads/interact/original/1X/42231556f40b5752203ace9014fe2187cc961f52.png)

Mitt script for å hente verksemder:  
var kjelde= datatabeller.Kartlegging;  
var Beskrivelse1 = ;  
var valgtkategori = Kommunalomrade5[“Kommunalomrade”];  
loop (kjelde) {  
if (valgtkategori == val[“Kommunalomrade”]) {Beskrivelse1 += val[“Verksemd”]:val};  
};

return Beskrivelse1;

---

<div class="post-metadata">

**Author:** ![Kim](https://avatars.discourse-cdn.com/v4/letter/k/9f8e36/32.png) [@Kim](https://www.interactcommunity.no/u/Kim)\
**Post date:** [februar 24, 2023, 7:34am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/3 "2023-02-24T07:34:53Z")

</div>

Jeg har en datasource som indeholder uddannelser og datoer for hvornår de starter. Jeg skal vise uddannelserne i en liste, men ikke for hver dato.  
Datasource kan se sådan ud:

UddannelseNavn Dato  
Uddannelse1 01-01-2023  
Uddannelse2 01-02-2023  
Uddannelse3 01-03-2023  
Uddannelse1 01-04-2023  
Uddannelse2 01-05-2023  
Uddannelse3 01-06-2023  
Uddannelse1 01-07-2023  
Uddannelse2 01-08-2023  
Uddannelse3 01-09-2023

Så jeg bruger denne metode med grab, så får jeg kun en række for hvert UddannelseNavn:

var VisUdannelser = datatabeller.Uddannelser;  
var distinctUddannelser = grab(Visuddannelser, “UddannelseNavn”);  
return distinctUddannelser;

---

<div class="post-metadata">

**Author:** ![oddveig](https://avatars.discourse-cdn.com/v4/letter/o/cab0a1/32.png) [@oddveig](https://www.interactcommunity.no/u/oddveig)\
**Post date:** [februar 24, 2023, 10:19am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/4 "2023-02-24T10:19:42Z")

</div>

Takk for svar!

Men vil jeg da få listet ut alle Verksemder, istedenfor å få listet ut kun de Verksemder som hører til et valgt Kommunalområde?

(Hvis de velger kommunalområde “Helse”, så skal de kun få opp verksemdene “Institusjonar” og “Arbeid og aktivitet”, ikke resten.)

 ![bilde](https://canada1.discourse-cdn.com/flex036/uploads/interact/original/1X/c118a8151005c855419f96cdbf30358e14259b6c.png)

---

<div class="post-metadata">

**Author:** ![Kim](https://avatars.discourse-cdn.com/v4/letter/k/9f8e36/32.png) [@Kim](https://www.interactcommunity.no/u/Kim)\
**Post date:** [februar 24, 2023, 10:51am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/5 "2023-02-24T10:51:25Z")

</div>

Jeg bruger 2 dropdown lister, hvor man først vælger en uddannelse og derefter vælger den dato man vil starte på uddannelsen.

Den første indeholder navne på uddannelser:  
var VisUdannelser = datatabeller.Uddannelser;  
var distinctUddannelser = grab(Visuddannelser, “UddannelseNavn”);  
return distinctUddannelser;

Den anden viser datoerne for den uddannelse som man har valgt i den første dropdown liste:  
var DSList = datatabeller.Uddannelser;  
var DSDato = ;  
loop(DSList) {  
if (val[“UddannelseNavn”] == Uddannelse[“UddannelseNavn”]) {  
DSDato += val[“Dato”] :val;  
};  
};  
return DSDato;

---

<div class="post-metadata">

**Author:** ![oddveig](https://avatars.discourse-cdn.com/v4/letter/o/cab0a1/32.png) [@oddveig](https://www.interactcommunity.no/u/oddveig)\
**Post date:** [februar 24, 2023, 12:46pm UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/6 "2023-02-24T12:46:12Z")

</div>

Takk igjen! Jeg har også to nedtrekkslister. På første nedtrekkslisten (kommunalområde), så får jeg opp bare én rekke per kommunalområde selv om det står flere ganger i datakilden/excelfilen:

![bilde](https://canada1.discourse-cdn.com/flex036/uploads/interact/original/1X/95f06f23ce76f4bc9d0e7bc491f960c3fa543065.png)

 ![bilde](https://canada1.discourse-cdn.com/flex036/uploads/interact/original/1X/23addde2e7174fd4da3c777554a9b5a3b214d212.png)

Men jeg får ikke til å kun få en av hver når jeg henter ut de verksemdene som hører til det valgte kommunalområdet:

var kjelde= datatabeller.Kartlegging;  
var Beskrivelse1 = ;  
var valgtkategori = Kommunalomrade5[“Kommunalomrade”];  
loop (kjelde) {  
if (valgtkategori == val[“Kommunalomrade”]) {Beskrivelse1 += val[“Verksemd”]:val};  
};

return Beskrivelse1;

 ![bilde](https://canada1.discourse-cdn.com/flex036/uploads/interact/original/1X/7cec97ba4fdd7b2c04f1b819d173d94d60e85e45.png)

Jeg prøvde å gjøre om til din metode, men jeg fikk likevel opp duplikater på verksemdene.

---

<div class="post-metadata">

**Author:** ![Kim](https://avatars.discourse-cdn.com/v4/letter/k/9f8e36/32.png) [@Kim](https://www.interactcommunity.no/u/Kim)\
**Post date:** [februar 27, 2023, 8:15am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/7 "2023-02-27T08:15:16Z")

</div>

Det ser korrekt ud, så det burde virke.  
Måske du skal prøve at ændre if sætningen for at se om det virker:

if (Kommunalomrade5[“Kommunalomrade”] = val[“Kommunalomrade”])

---

<div class="post-metadata">

**Author:** ![oddveig](https://avatars.discourse-cdn.com/v4/letter/o/cab0a1/32.png) [@oddveig](https://www.interactcommunity.no/u/oddveig)\
**Post date:** [mars 1, 2023, 7:42am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/8 "2023-03-01T07:42:04Z")

</div>

Jeg fikk ikke det til å virke heller. Jeg endte tilslutt opp med dette, og det fungerer (tilsynelatende) 🙂

var kjeldeHaram = datatabeller.Haram;  
var kjeldeAlesund = datatabeller.Kartlegging;  
var Beskrivelse1 = ;  
var valgtkategori = Kommunalomrade8[“Kommunalomrade”];

if (Kommune4.\_lesund6){  
loop (kjeldeAlesund) {  
if (valgtkategori == val[“Kommunalomrade”]) {Beskrivelse1 += val[“Verksemd”]};  
};  
{loop (Beskrivelse1)  
{  
for(var i=0, i\<sizeof(kjeldeAlesund[“Verksemd”]), i++){ //begynner å telle på 0  
for(var ix=i+1,ix\<sizeof(kjeldeAlesund[“Verksemd”]), ix++){ //setter ix til å være ett nummer større enn i - slik at den ikke validerer seg selv.  
if(kjeldeAlesund[“Verksemd”][i] == kjeldeAlesund[“Verksemd”][ix]){Beskrivelse1 += val kjeldeAlesund[“Verksemd”]};  
};  
};  
};  
};

return Beskrivelse1;  
}  
if (Kommune4.Haram6){  
loop (kjeldeHaram) {  
if (valgtkategori == val[“Kommunalomrade”]) {Beskrivelse1 += val[“Verksemd”]};  
};  
{loop (Beskrivelse1)  
{  
for(var i=0, i\<sizeof(kjeldeHaram[“Verksemd”]), i++){ //begynner å telle på 0  
for(var ix=i+1,ix\<sizeof(kjeldeHaram[“Verksemd”]), ix++){ //setter ix til å være ett nummer større enn i - slik at den ikke validerer seg selv.  
if(kjeldeHaram[“Verksemd”][i] == kjeldeHaram[“Verksemd”][ix]){Beskrivelse1 += val kjeldeHaram[“Verksemd”]};  
};  
};  
};  
};

return Beskrivelse1;

---

<div class="post-metadata">

**Author:** ![Kim](https://avatars.discourse-cdn.com/v4/letter/k/9f8e36/32.png) [@Kim](https://www.interactcommunity.no/u/Kim)\
**Post date:** [mars 1, 2023, 8:12am UTC](https://www.interactcommunity.no/t/validere-duplikater-i-en-liste/416/9 "2023-03-01T08:12:48Z")

</div>

Kan det muligvis være fordi der mangler ; efter :val , så if linjen skal se sådan ud:

if (valgtkategori == val[“Kommunalomrade”]) {Beskrivelse1 += val[“Verksemd”]:val;};
