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 ärtrue
för att resultatet ska blitrue
. - Operatorn
||
(OR, ELLER) kräver att minst ena värdet ärtrue
för att resultatet ska blitrue
.
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).