Blog: JavaScript: Lær nogle seje tricks.

Jeg er snublet over sitet codewars.com og det er vanedannende. Det har på få dage gjort mig til en bedre JavaScript-programmør. Dels fordi jeg har lavet små algoritmer, jeg ellers ikke laver så meget af til hverdag, og dels fordi jeg har kigget andre dygtige programmører over skulderen.

Codewars går i alt sin enkelhed ud på, at man får stukket små programmøringsopgaver ud, som man så løser. Når man har løst sin opgave får man de andres, nogle gange geniale, løsninger at se.

Der er selvfølgelig et ranking-system, up-votes af løsninger, diskussioner og man kan også lave sine egne opgaver, kaldet kataer.

Konkrete tricks

Her er nogle eksempler på JavaScript-tricks. Nogle kendte jeg i forvejen og nogle har jeg lært eller fået genopfrisket på codewars.

Du skal være opmærksom på, at hvis det skal virke i alle browsere skal du nok have fat i en shim. Alle tricks virker out-of-the-box i node.js.

Hvis du gerne vil checke en http-responskode, kan du gøre det med:

Når du gerne vil bruge nogle af de nye funktioner på arrays, som forEach, indexOf, map, reduce, filter, every, some, find osv. Så virker de ikke på et array hvor du bare angiver længden i new. Hvis du for eksempel skal lave et array med værdierne 0 til 9:

 //VIRKER IKKE
var a = new Array(10).map(function (value, index){
    return index;
});
//a er lig [undefined, ..., undefined]
//fordi map ikke bliver kørt rigtigt
 
//VIRKER
a = Array.apply(null, new Array(10)).map(function (value, index){
   return index;
});
//a indeholder [0, 1, 2, 3, 4, 5 ,6 ,7, 8, 9]

Hvis du gerne vil filtrere alle falsy værdier (undefined, null, nul (0), tom streng, NaN, false) fra et array, kan du gøre det således:

Hvis du har en if-sætning, hvor du skal checke om en variabel er lig en af to eller flere strenge, kan du gøre det sådan:

Hvis du er rigtig fræk udnytter du at 0 (nul) er falsy. Det vil jeg dog umiddelbart ikke gøre i kode jeg skal vedligeholde, men til codewars er det fint.

Hvis du vil have den største tal-værdi fra et array, kan du gøre det sådan:

var max = Math.max.apply(Math, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
//max er lig 9

Hvid du vil lave en streng om til et array af de enkelte tegn, kan du gøre det sådan:

Hvis du vil lave en if-sætning, hvor koden kun kører hvis et array har indhold, kan du gøre det med:

Der er mange andre tricks, det her var blot nogle få.

Hvad med dig? Har du et JavaScript-trick du vil dele i kommentarerne?

Ellers vil jeg anbefale at du hopper over på codewars.com, så lærer du helt sikkert noget nyt.

Posted in computer.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>