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.
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?
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};
};
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:
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;
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:
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”]};
};
};
};
};