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 lexikografiskt, 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 du använder när du 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 funktion B så väljer du istället att göra en kopia på parametern. När du arbetar med kopian så är argumentet oförändrat.

En kopia kan göras på flera olika sätt men Array.from är ofta att föredra

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 till skillnad från arrayer som är objekttyper och därmed av referenstyp. Det betyder att argumentet kopieras till parametern och du 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 variablerna inte namngivits 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 du inte använda med detta för större arrayer (>30k element) då det leder till att koden kraschar.)

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