Hvordan definere Array's?

En tråd i 'Javascript/Ajax' startet av JasonStackhouse, 6 Aug 2012.

  1. JasonStackhouse New Member

    Innlegg:
    9
    Hvilken av disse typene definisjonene bør jeg bruke
    var list = new Object();
    var list = Object.create( null );
    var list = new Array( null );

    for disse arrayene?

    list.foo = ['hello','some stuff'];
    list.bar = ['hey', 'Hi'];
    list.hello = ['hey', 'Hi'];

    Har vært inne i chatten på Stackoverflow uten at jeg helt forstår dette.
     
  2. Stein Ove Helset Hacker

    Innlegg:
    254
    Hei.
    Ville gjort dette: var myArray = new Array();
    myArray[0] = "Item1";
    myArray[1] = "Item2";
     
  3. adeneo

    adeneo Medlem

    Innlegg:
    1.611
    I javascript er alt objekter, også array's, men det er visse forskjeller.

    Først, følgende er det samme:

    PHP:
    var list = {}; //definerer et nytt tom object
    var list = new Object(); //definerer også ett nytt tomt object

    var list2 = []; //definerer ett nytt tomt array
    var list2 = new Array(); //definerer også ett nytt tomt array
    Den første varianten kalles et objekt, mens den andre kalles et array, selv om alt i javascript egentlig er objekter, også funksjoner og mye annet.

    For eksempel kan man definere en funksjon

    PHP:
    var doSomething = function() {
        
    alert('Hello Kitty');
    }
    Ser man nærmere så er det tydelig at det er et objekt, og derfor kan vi også gjøre:

    PHP:
    var doSomething = {
        
    doMore: function() {
             
    alert('mere stasj');
        },
        
    doLess: function() {
             
    alert('mindre stasj');
        }
    }

    doSomething.doMore(); //kaller en av funksjonene i doSomething objektet
    Tar vi det litt videre så er altså et objekt normalt bestående av et såkalt key/value par, så vi kan da gjøre :


    PHP:
    var list = { foo : {hello 'some stuff'}, bar : {hey 'Hi'}, hello : {hey'Hi'}};

    alert( list.foo.hello ); //gir 'some stuff'
    Altså er diverse metoder innad i objektet tilgjengelige med "dot notation", altså ved å bruke punktum mellom navnene, men de er også tilgjengelige som :

    PHP:
    list.foo[hello];
    Som kan være greit dersom det er ugyldige tegn eller strenger vi skal hente.

    Vanlige array's kan vi definere som :

    PHP:
    var list = ['hey''hi''hello'];
    men her er verdiene nå kun tilgjengelige som en nummerert nullbasert indeks, altså slik :

    PHP:
    alert( list[1] ); //gir 'hi'
    Du kan også putte arrayer i objekter, og for ditt eksempel så bør du nok gjøre :

    PHP:
    var list = new Object();
        list.
    foo = ['hello','some stuff'];
        list.
    bar = ['hey''Hi'];
        list.
    hello = ['hey''Hi'];
    Ettersom 'var list' helt klart er et objekt ettersom det brukes "dot notation", og du kunne også definert som :

    PHP:
    var list2 = {foo: ['hello','some stuff'], bar : ['hey''Hi'], hello : ['hey''Hi']};
    Og fått akkurat det samme objektet, som er tilgjengelig slik :

    PHP:
    list.foo[0]; //gir 'hello'
    list.foo[1]; //gir 'some stuff'
    Forøvrig bør det ikke brukes alert() når man holder på med slikt, men ha en vane å logge til konsollen i stedet, da kan man se hele objektet der.
     
    Sist redigert: 6 Aug 2012
  4. JasonStackhouse New Member

    Innlegg:
    9
    Tusen takk for forklaringen! Er fortsatt bare litt over begynnelsen på "eventyret" mitt i JavaScript. Takk for at du fikk meg til å forstå mer om objekter :D


    Har nødt til å definere disse med et navn, desverre.
     
  5. JasonStackhouse New Member

    Innlegg:
    9
    En bedre vei jeg fant ut nå! Mye renere og bedre!

    Kode:
    var list = {
    foo: [...],
    bar: [...],
    hello: [...]
    };
    Så, hva syns dere?
     
  6. adeneo

    adeneo Medlem

    Innlegg:
    1.611
    Ja, du kan godt sette de på hver sin linje, det spiller ingen rolle det blir akkurat det samme som det nederste eksempelet i innlegget mitt ovenfor.

    Bare pass på at du ikke kan dele strenger over flere linjer uten å escape eller bruke plusstegn :

    PHP:
    var bar = {
        
    foo "Alle barna spiste hamburger, 
               unntatt Ronny, 
               det var hans ponny."
    ;
        }
    Går veldig dårlig?
     
    Tonny Kluften liker dette.

Del denne siden