webForumDet fria alternativet

Lite array frågor

3 svar · 576 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20012 997 inlägg
#1

Har lite funderingar på hur det fungerar med arrays?

Jag vill skapa en array som jag efterhand kan lägga till värden i.

Sedan vill jag kunna loopa igenom hela arrayen på så många värden som den innehåller.

1. Alltså hur skapar jag arrayen?
2. Hur lägger jag till värden?
3. Hur loppar jag igenom den?

AddeladdeMedlem sedan jan. 20012 997 inlägg
#2

Om man dessutom vill plocka bort värden ur arrayen hur gör man det?

Om man t.ex har:
minArray[1] = "test1";
minArray[2] = "test2";
minArray[3] = "test3";

och så vill jag plocka bort test2 så att arrayen blir följande:
minArray[1] = "test1";
minArray[2] = "test3";

???

nitro2k01Medlem sedan aug. 20037 630 inlägg
#3

Allt om javascript's arrayer

Det finns två sätt att skapa en array på. Antingen genom konstruktorn Array eller genom [].

 
enarray = new Array();
// är samma sak som
enarray = [];

enarray = new Array("röd", "blå", "gul");
// är samma sak som
enarray = ["röd", "blå", "gul"];

När väl en variabel har initierats som array kan du lägga till värden som du vill.
Om du vill lägga till ett värde på slutet av en array ser syntaxen ut så här:

enarray[enarray.length] = "Något värde";

För att stega igenom alla element i en array finns det två sätt. Dels det traditionella C-sättet.

 
for (i=0; i<enarray.length; i++){
  // lite kod
  alert( "Index: " + i + "\nVärde: " + enarray[i] )
}

Här stegas loopen genom värde för värde från 0 till (enarray.length-1) Värdet med högst index ligger normalt ett snäpp under värdet enarray.length

Men javascript har även ett sätt till:

 
for (i in enarray){
  // lite kod
  alert( "Index: " + i + "\nVärde: " + enarray[i] )
}

Denna metod stegar igenom alla index och loopen körs en gång per index.
Skillnaden mellan metoderna är att den första metoden bara kan hantera numeriska index, medan den andra kan hantera vilken typ som helst.
Här kommer man in på en stark fördel med javascript's arrayer. De kan ha strängindex. Man kan alltså skriva som följer:

 
enarray = [];
enarray ["chokladkaka"] = "Gott";
enarray ["blodpudding"] = "Äckligt";
enarray ["potatis"] = "Nyttigt";

for (i in enarray){
  alert( "Index: " + i + "\nVärde: " + enarray[i] )
}

Skulle du klistra denna kod i ett skriptblock på en sida skulle den räkna de värden som satts precis innan. Då är chokladkaka, blodpudding och potatis tre olika index, och Gott, Äckligt och Nyttigt är tre värden.

Läs detta noggrannt och pröva att koda själv, så ska du se att det släpper. ;)

Så till din andra fråga, om att ta bort index. Ponera att du har följande kod:(Anm: Jag har ändrat i din kod, eftersom det är brukligt att det första elementet är 0)

minArray[0] = "test1";
minArray[1] = "test2";
minArray[2] = "test3";

Du vill ta bort ettan. Det gör du så här:

delete minArray[1];

Men att göra så har en egenhet. Delete lämnar nämligen kvar ett hål i Array'n; minArray[1] finns helt enkelt inte längre. Om man skulle använda metod 1 för att söka genom denna array, så skulle man troligen få ett fel i koden eftersom denna metod räknar från 0 till 2, och då även 1 som inte finns längre.
Metod 2 räknar däremot bara igenom de element som faktiskt finns och funkar utmärkt i detta exempel.

Piuh. :bire :birp

AddeladdeMedlem sedan jan. 20012 997 inlägg
#4

Klockren beskrivning! Fått det att fungera riktigt bra! Det kommer säkert nån fråga ju mer jag grottar ner mig i det.

Tack!

Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb