[ Web Proxy ]
URL:
Viewing: https://da.javascript.info/task/array-unique [Back]  [Original]

Filtrer unikke array-medlemmer
DA

Vi nsker at gre dette open source-projekt tilgngeligt for folk over hele verden.

Hjlp med at overstte indholdet af denne tutorial til dit sprog!

    Sg p Javascript.info:
    Sg i tutorialen:
    Lyst temaMrkt tema
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek
    tilbage til lektionen

    Filtrer unikke array-medlemmer

    vigtighed: 4

    Lad arr vre et array.

    Opret en funktion unique(arr), der skal returnere et array med unikke elementer fra arr.

    For eksempel:

    function unique(arr) {
      /* din kode */
    }
    
    let strings = ["Hare", "Krishna", "Hare", "Krishna",
      "Krishna", "Krishna", "Hare", "Hare", ":-O"
    ];
    
    alert( unique(strings) ); // Hare, Krishna, :-O

    bn en sandbox med tests.

    lsning

    Lad os gennemg array-elementerne:

    • For hvert element tjekker vi, om det resulterende array allerede indeholder det element.
    • Hvis det er tilfldet, ignorerer vi det, ellers tilfjer vi det til resultatet.
    function unique(arr) {
      let result = [];
    
      for (let str of arr) {
        if (!result.includes(str)) {
          result.push(str);
        }
      }
    
      return result;
    }
    
    let strings = ["Hare", "Krishna", "Hare", "Krishna",
      "Krishna", "Krishna", "Hare", "Hare", ":-O"
    ];
    
    alert( unique(strings) ); // Hare, Krishna, :-O

    Koden virker, men der er et potentielt ydelsesproblem i den.

    Metoden result.includes(str) gennemgr internt arrayet result og sammenligner hvert element med str for at finde et match.

    S hvis der er 100 elementer i result og ingen matcher str, vil den gennemg hele result og lave prcis 100 sammenligninger. Og hvis result er stort, som 10000, vil der vre 10000 sammenligninger.

    Det er ikke et problem i sig selv, fordi JavaScript-motorer er meget hurtige, s det at gennemg et array med 10000 elementer kun tager mikrosekunder.

    Men vi laver sdan en test for hvert element i arr i for-lkken.

    S hvis arr.length er 10000, vil vi have noget i retning af 10000*10000 = 100 millioner sammenligninger. Det er meget.

    S lsningen er kun god til sm arrays.

    Senere i kapitlet Map og Set vil vi se, hvordan man optimerer det.

    NB: I moderne JavaScript kan vi bruge en Set til at gre det samme p en mere effektiv mde.

    bn lsningen med tests i en sandbox.


    Web Proxy Viewer  |  New URL  |  Original Page