Utmaningar

1.0 Node.js

Installera Node.js, den senaste versionen.

1.1 Bestäm summan, differensen, produkten samt kvoten

Skriv uttryck som adderar, subtraherar, multiplicerar och dividerar talen 27 och 15.

Tips

Testa uttrycket i Node-terminalen.

Lösningsförslag

Klicka här för lösningsförslag!

Observera att kvoten presenteras med decimalpunkt. (För få det format som gäller i Sverige kan (27/15).toLocaleString('sv-SE') användas, vilket ger 1,8. OBS! Detta är bara intressant då ett tal med decimaler, flyttal, ska presenteras.)

1.2 Varför är det en differens mellan differenserna?

Skriv in uttrycket 0.2 - 0.1 i Node-terminalen. Skriv därefter in uttrycket 1.2 - 1.1 i Node-terminalen. Resultat? Varför?

Tips

Heltal kan lagras exakt men...

Lösningsförslag

Klicka här för lösningsförslag!

Flyttal kan inte representeras exakt utan bestäms till ett värde väldigt nära det korrekta värdet.

1.3 Två upphöjt till fyra på flera sätt

24 kan till exempel uttryckas som 2 * 2 * 2 * 2. Skriv två uttryck som gör samma sak genom att använda Math.pow() respektive den aritmetiska operatorn **.

Lösningsförslag

Klicka här för lösningsförslag!

1.4 Heltal uttryckta med talbaserna 16 och 2

Skriv ett uttryck som ger det decimala värdet för det hexadecimala värdet #FFFF00 (RGB-färgen gul), samt ett uttryck som ger det decimala värdet av det binära talet 101010.

Tips

JavaScript kan tolka heltalsliteraler på flera sätt utöver värden angivna med talbasen 10.

Lösningsförslag

Klicka här för lösningsförslag!

Det går även att använda versaler när hexadecimala tal skrivs, 0xFFFF00. (Många anser dock att det är svårare att läsa ett hexadecimalt värde skrivet med versaler, men nu kan det skrivas tydligare med 0xFF_FF_00.)

1.5 Bestäm det största talet av fyra

Skapa ett uttryck som ger det största talet av 14, 3, 27 och -4.

Tips

Botanisera lite kring det inbyggda objektet Math. Du kan läsa om Math i kurslitteraturen eller på MDN.

Lösningsförslag

Klicka här för lösningsförslag!

1.6 Bort med decimalerna

Skriv uttryck som använder en samma Math-funktion för att ta bort decimaler men behåller heltalsdelen av ett tal som är antigen positivt eller negativt.

Lösningsförslag

Klicka här för lösningsförslag!

1.7 Bestäm antalet hela dagar och återstående timmar

Skapa två uttryck som ger antalet hela dagar respektive återstående timmar som 843 timmar motsvarar.

Tips

Testa uttrycken i Node-terminalen.

Lösningsförslag

Klicka här för lösningsförslag!

1.8 Antalet tecken

Skriv ett uttryck som bestämmer antalet tecken i strängen DET ÄR GEMENT VAD MÅNGA VERSALER DENNA TEXT INNEHÅLLER.

Lösningsförslag

Klicka här för lösningsförslag!

1.9 Byt ut och gör om till små bokstäver

Skriv ett uttryck som ersätter VERSALER med gemener i strängen DET ÄR GEMENT VAD MÅNGA VERSALER DENNA TEXT INNEHÅLLER för att därefter göra om alla tecken till gemener (små bokstäver).

Tips

  • Modifierade versioner av strängen ska skapas.

Lösningsförslag

Klicka här för lösningsförslag!

Först bestäms uttrycket 'DET ÄR GEMENT VAD MÅNGA VERSALER DENNA TEXT INNEHÅLLER'.replace('VERSALER', 'gemener') vilket ger den nya strängen 'DET ÄR GEMENT VAD MÅNGA gemener DENNA TEXT INNEHÅLLER'. Denna sträng görs i sin tur om till en helt ny sträng innehållande enbart gemener genom ett anrop av metoden toLoweCase().

1.10 Upprepning av en sträng

Skapa ett uttryck som ger 10 textrader där varje textrad innehåller Hej Monica, hej på dig Monica!. Texten får bara anges en gång.

Tips

Det inbyggda objektet String tillhandahåller flera metoder för att arbeta med strängar.

Lösningsförslag

Klicka här för lösningsförslag!

Lägg märke till det avslutande nyradstecknet \n, vilket krävs för att skapa en ny rad efter texten. (Är det nördigt att uppmärksamma att Node.js visar resultatet som en konkatenering av 10 strängar istället en enda lång sträng?)

1.11 Oväntad datatyp

Skriv ett uttryck som ger datatypen för resultatet av uttrycket '2' * '3'.

Lösningsförslag

Klicka här för lösningsförslag!

Då JavaScript inte ser någon större mening med att multiplicera två strängar med varandra (vad innebär det?) så typomvandlar JavaScript automatiskt strängen '2' till talet 2 och strängen '3' till talet 3 och multiplicerar de typomvandlade värdena, vilket ger produkten 6, som är ett värde av typen Number.

Parenteserna behövs för att operatorn typeof har högre prioritet än operatorn *. Tas parentesen bort blir resultatet NaN. Varför? Det som händer då är att JavaScript bestämmer typeof '2' till 'string', vilket inte kan typomvandlas till ett tal, varför JavaScript bestämmer det fullständiga uttryckets värde till NaN, Not a Number.

1.12 Större eller mindre

Skriv ett uttryck som visar om talet 17 är större än talet 11. Skriv även ett uttryck som visar om talet 17 är mindre än 11.

Lösningsförslag

Klicka här för lösningsförslag!

En minnesregel är att jämförelseoperatorn (större än>, mindre än <) ska "gapa" åt det värde som är störst för att resultatet ska bli true.

1.13 Det är logiskt

Skriv två uttryck som bestämmer om två booleska värden är true respektive om minst ett av två booleska värden är true.

(ditt uttryck som visar om två booleska värden är true) -> true (ditt uttryck som visar om ett av två booleska värden är true) -> true

Lösningsförslag

Klicka här för lösningsförslag!
  • Operatorn && (AND, OCH) kräver att båda värdena är true för att resultatet ska bli true.
  • Operatorn || (OR, ELLER) kräver att minst ena värdet är true för att resultatet ska bli true.

1.14 En samling med värden av samma typ

Skriv ett uttryck som skapar en array-literal innehållande värdena 3, -7, 12, 29, 9, 42 och -2.

Lösningsförslag

Klicka här för lösningsförslag!

1.15 En samling med värden av olika typ

Skriv ett uttryck som skapar en objekt-literal innehållande värden om hunden Killer (name), 3 år (age), 2,3 kg (weight), som är av rasen Chihuahua (breed).

Lösningsförslag

Klicka här för lösningsförslag!