Utmaningar

Fråga 04-01: Vad returnerar funktionen?

  • undefined
  • [1, 2, 3, 4, 5]
  • 5
  • 1
Kommentar

I och med att length i detta fall är 5, så kommer numbers[length] att referera till index 5 som inte finns i arrayen. Därav svaret "undefined".

Fråga 04-02: Vad returnerar funktionen?

  • [1, 13, 23, 4, 8]
  • [1, 4, 8, 12, 23]
  • [23, 12, 8, 4, 1]
  • [1, 23, 12, 4, 8]
Kommentar

sort-funktionen sorterar "lexografiskt", den gör om samtliga nummer till strängar och sorterar strängarna. Därav att 13 kommer efter 1. För att lösa detta behöver vi skicka med en jämförelsefunktion till sort:

Fråga 04-03: Vilka av funktionerna lämnar argumentet opåverkat?

  • functionA
  • functionB
  • functionC
  • functionD
Kommentar

Funktion A

I detta fall skickas arrayens referens in som argument till funktionen och motsvaras av parametern "hej". Detta betyder att "hej" och "anArray" refererar till samma array.

Det betyder att oavsett om det är hej eller anArray vi använder när vi gör en förändring av arrayen så påverkas båda referensernas underliggande värde.

Funktion A påverkar argumentet och är således en funktion med sidoeffekter.

Funktion B

I funkton B så väljer vi istället att göra en kopia på paramentern. När vi arbetar mot kopian så är argumentet oförändrat

En kopia kan göras på flera olika sätt men vi föredrar Array.from

Funktion B påverkar inte argumentet och är en funktion utan sidoeffekter

Funktion C

Läser vi på i dokumentation för Array.map så får vi information om att map skapar en kopia av arrayen.

Funktion C påverkar inte argumentet och är en funktion utan sidoeffekter

Funktion D

aNumber är ett nummer som är en primitiv datatyp och därmed av värdetyp tillskillnad från arrayer som är objekttyper och därmed av referenstyp. Det betyder att argumentet kopieras till parametern och vi behöver alltså inte manuellt göra en kopia.

Funktion D påverkar inte argumentet och är en funktion utan sidoeffekter

Fråga 04-04: Vad returnerar funktionen?

  • ['ett', 'två', 'tre', 'fyra', 'fem']
  • ['två', 'tre']
  • ['tre']
  • ['tre', 'fyra']

Fråga 04-05: Vad returnerar funktionen?

  • -129
  • 123
  • 2
  • 3987
Kommentar

Lite svårt att hänga med? Det beror på att vi inte namngivit våra variabler på ett bra sätt. Titta istället på:

Enklare? Funktionen listar ut vilket element som är det största i arrayen. Ett alternativt sätt att göra detta på är:

(Dock ska vi vara försiktiga med detta för större arrayer (>30k element) då presentandan kan påverkas)

Fråga 04-06: Vad returnerar funktionen?

  • Value must be of type Number
  • [3, 7, 1, 11, 124]
  • Error: Value must be an odd number
  • 5