Avatar billede hestetoften Nybegynder
27. januar 2006 - 23:17 Der er 5 kommentarer og
1 løsning

finde næste værdi i array

Hvordan finder jeg frem til næste eller forrige værdi(tal) i et array ?

var vnTal=new Array();
vnTal[0]=1;
vnTal[1]=3;
vnTal[2]=4;
vnTal[3]=8;
vnTal[4]=9;

jeg har tallet 4, næste res skal så være 8 og forrige skal så være 3.!
hvordan laves dette i 2 separate funktioner ?
Avatar billede olebole Juniormester
28. januar 2006 - 03:30 #1
<ole>

Hvordan skal det bruges?

/mvh
</bole>
Avatar billede tjp Mester
28. januar 2006 - 04:36 #2
Skal det forstås således at dit array altid kun indeholder unikke tal som ligger hulter til bulter?
Avatar billede hestetoften Nybegynder
29. januar 2006 - 20:42 #3
Tallene ligger ordnet efter størrelse i array

jeg forestiller mig noget ala dette:

<script>
function getNumber(sendtTal,retning){
var resTal; // resultat
if (retning == 'op'){
resTal = find første tal i array der er større end sendtTal
}
if (retning == 'ned'){
resTal = find første tal i array der er mindre end sendtTal
}
alert(resTal);
}
</script>

<a onclick="getNumber(4,'ned')">find forrige</a>
<a onclick="getNumber(4,'op')">find næste</a>

Håber dette beskriver hvad jeg mener !
Avatar billede tjp Mester
30. januar 2006 - 00:21 #4
Nu har du jo næste lavet det selv, så hvorfor ikke fortsætte? ;-)
Løb array'et igennem til du finder det ønskede tal og returnér elementet før/efter for hhv. 'ned' og 'op'.
Dog må du lige tage stilling til, hvad skal der ske hvis tallet er det mindste/største, eller hvis det ikke findes i array'et.
Avatar billede tjp Mester
20. februar 2006 - 05:20 #5
Lukketid? ;-)
Avatar billede hestetoften Nybegynder
21. februar 2006 - 20:40 #6
Sorry men jeg lavede dette, om det er optimalt ??  men det fungerer..

function getNumber(sendtTal,retning){ // bladrer igennem alle tal der findes i array
var resTal,fak;
sendtTal = parseInt(sendtTal);
langde = vnTal.length-1;
maksTaller = (vnTal[langde] - vnTal[0]);
if (retning == 'op')
{
for(fak=1;fak<=maksTaller;fak++)
{
  for(i=0;i<=langde;i++)
  {
      if(vnTal[i] == (sendtTal+fak))
      {
        resTal = vnTal[i];
        fak = (maksTaller+1);
        break;
        }
  }
}
}else
// if 'ned'
for(fak=1;fak<=maksTaller;fak++)
{
  for(i=0;i<=langde;i++)
  {
      if(vnTal[i] == (sendtTal-fak))
      {
        resTal = vnTal[i];
        fak = (maksTaller+1);
        break;
        }
  }
}
//alert('NED Det sendte tal er: '+sendtTal+' og forrige er : '+resTal);
if (parseInt(resTal))
form1.varenummer.value = resTal;
}

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester