Avatar billede bamzen Nybegynder
16. juli 2002 - 11:11 Der er 9 kommentarer og
2 løsninger

Slette array?

Hej,

Jeg har et array som bliver dynamisk genereret...

Nu vil jeg gerne kunne slette dette array, og eventuelt oprette det igen

sådan noget som

myArray.length = -1


og derefter sige

myArray[myArray.length] = new someFunction()
myArray[myArray.length] = new someFunction()
myArray[myArray.length] = new someFunction()
myArray[myArray.length] = new someFunction()
myArray[myArray.length] = new someFunction()

problemet er at når jeg senere laver min løkke der genererer en menu ud fra det array, så er jeg nødt til at have den korrekte værdi på myArray.length

Anyone????
Avatar billede limemedia Nybegynder
16. juli 2002 - 11:21 #1
prøv med

myArray = new Array();

der burde initialisere dit array til et nyt tomt array - jeg tester lige lokalt også
Avatar billede limemedia Nybegynder
16. juli 2002 - 11:23 #2
eksemplet her beviser det virker
<script language="JavaScript" type="text/javascript">
<!--
    var myArray = new Array();
   
    myArray[0] = 1;
    alert("Indhold er "+myArray[0]);
   
    var myArray = new Array();
    alert("Indhold er "+myArray[0]);
//-->
</script>

/ LJ
www.ljweb.com
Avatar billede jakoba Nybegynder
16. juli 2002 - 11:23 #3
Du kan slette dit array (eller enhver anden variabel) med operatoren delete.  eg:
    delete myArray;
så er det array helt væk (og er ikke engang et array, så før du kan fylde nye celler i det igen må du sige:
    myArray = new Array();

den med length forstår jeg ikke.  myArray.length  er da til enhver tid den 'korrekte' værdi?

mvh JakobA
Avatar billede limemedia Nybegynder
16. juli 2002 - 11:25 #4
jakob >> ikke for at gå dig i bedene, men da jeg ikke kender delete operatoren ville jeg lige forsøge

<script language="JavaScript" type="text/javascript">
<!--
    var myArray = new Array();
   
    myArray[0] = 1;
    alert("Indhold er "+myArray[0]);
   
    delete myArray;
    alert("Indhold er "+myArray[0]);
//-->
</script>

anden alertbox indeholder stadig værdien 1 ? hvad gør jeg forkert ?
Avatar billede bamzen Nybegynder
16. juli 2002 - 11:27 #5
Det lader til at ville virke, jeg går igang med implementationen,

Takker og bukker ;-)

/Martin
Avatar billede bamzen Nybegynder
16. juli 2002 - 11:31 #6
Jakob,

Det jeg mente var at har jeg lavet et array med lad os sige 9 instanser, så kan jeg sagtens replace de første eksempelvis 5, bare ved en myArray[1] = "noget nyt" etc... men derfor vil længden af arrayet stadig være 9, da jeg ikke har slettet nogle af instanserne 4-8 (eller 5-9, om, i vil)

Forstår du nu?

/Martin
Avatar billede jakoba Nybegynder
16. juli 2002 - 11:33 #7
ljweb >> jep, delete er en lidt underlig en. den virker ikke på variable defineret med var.
<script language="JavaScript" type="text/javascript">
<!--
    this.myArray = new Array();    // næsten (men ikke helt) det samme som
                                  // var myArray = new Array();
    myArray[0] = 1;
    alert("Indhold er "+myArray[0]);
 
    delete myArray;
    alert("Indhold er "+myArray[0]);
//-->
</script>
Avatar billede limemedia Nybegynder
16. juli 2002 - 11:37 #8
jakoba >> man lærer noget nyt hver dag *g* tak for forklaringen
Avatar billede jakoba Nybegynder
16. juli 2002 - 11:41 #9
Ok, så er det nok din linie:
    myArray.length = -1;
du nok skal kikke på. sålænge dit array er et Array objekt kan det ikke have et negativt antal elementer. Jeg kunne forestille mig at den linie bliver ignoreret. brug istedet:
    myArray.length = 0;
da 0 er en mulig værdi for length attributten at have.
Avatar billede bamzen Nybegynder
16. juli 2002 - 11:43 #10
Da jeg testede din kode brokkede MS script debugger sig, så jeg prøvede at ændre den til følgende, hvorefter det fungerer som forventet ;-)

<script language="JavaScript" type="text/javascript">
<!--
    myArray = new Array();    // næsten (men ikke helt) det samme som
                                  // var myArray = new Array();
    myArray[0] = 1;
    alert("Indhold er "+myArray[0]);
 
    delete myArray;
    alert("Indhold er "+myArray[0]);
//-->
</script>


Jeg takker og bukker endnu engang!

/Martin
Avatar billede mikoalngelo Nybegynder
16. juli 2002 - 13:33 #11
myArray.length virker da fint.
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