Utmaningar
1.0 Node.js
Section titled “1.0 Node.js”Installera Node.js, den senaste versionen.
1.1 Bestäm summan, differensen, produkten samt kvoten
Section titled “1.1 Bestäm summan, differensen, produkten samt kvoten”Skriv uttryck som adderar, subtraherar, multiplicerar och dividerar talen 27 och 15.
(ditt uttryck för additionen här) -> 42(ditt uttryck för subtraktion här) -> 12(ditt uttryck för multiplikation här) -> 405(ditt uttryck för division här) -> 1.8Testa uttrycket i Node-terminalen.
Lösningsförslag
Section titled “Lösningsförslag”> 27 + 1542> 27 - 1512> 27 * 15405> 27 / 151.8Observera 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?
Section titled “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?
Heltal kan lagras exakt men…
Lösningsförslag
Section titled “Lösningsförslag”> 0.2 - 0.10.1> 1.2 - 1.10.09999999999999987Flyttal 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
Section titled “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
Section titled “Lösningsförslag”> Math.pow(2, 4)16> 2 ** 4161.4 Heltal uttryckta med talbaserna 16 och 2
Section titled “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.
(ditt uttryck för det hexadecimala talet) -> 16776960(ditt uttryck för det binära talet) -> 42JavaScript kan tolka heltalsliteraler på flera sätt utöver värden angivna med talbasen 10.
Lösningsförslag
Section titled “Lösningsförslag”> 0xffff0016776960> 0b10101042Det 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
Section titled “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.
(ditt uttryck för det största talet) -> 27Botanisera lite kring det inbyggda objektet Math. Du kan läsa om Math i kurslitteraturen eller på MDN.
Lösningsförslag
Section titled “Lösningsförslag”> Math.max(14, 3, 27, -4)271.6 Bort med decimalerna
Section titled “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.
(ditt uttryck för talet 23.852) -> 23(ditt uttryck för talet -23.852) -> -23(ditt uttryck för talet -7.119) -> -7Lösningsförslag
Section titled “Lösningsförslag”> Math.trunc(23.852)23> Math.trunc(-23.852)-23> Math.trunc(-7.119)-71.7 Bestäm antalet hela dagar och återstående timmar
Section titled “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.
(ditt uttryck för antalet dagar här) -> 35(ditt uttryck för återstående timmar här) -> 3Testa uttrycken i Node-terminalen.
Lösningsförslag
Section titled “Lösningsförslag”> Math.trunc(843 / 24)35> 843 % 2431.8 Antalet tecken
Section titled “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.
(ditt uttryck som ger datatypen) -> 54Lösningsförslag
Section titled “Lösningsförslag”> 'DET ÄR GEMENT VAD MÅNGA VERSALER DENNA TEXT INNEHÅLLER'.length541.9 Byt ut och gör om till små bokstäver
Section titled “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).
(ditt uttryck som ersätter och gör om) -> 'det är gement vad många gemener denna text innehåller'- Modifierade versioner av strängen ska skapas.
Lösningsförslag
Section titled “Lösningsförslag”> 'DET ÄR GEMENT VAD MÅNGA VERSALER DENNA TEXT INNEHÅLLER'.replace('VERSALER', 'gemener').toLowerCase()'det är gement vad många gemener denna text innehåller'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 toLowerCase().
1.10 Upprepning av en sträng
Section titled “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.
Det inbyggda objektet
String
tillhandahåller flera metoder för att arbeta med strängar.
Lösningsförslag
Section titled “Lösningsförslag”> 'Hej Monica, hej på dig Monica!\n'.repeat(10)'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n' + 'Hej Monica, hej på dig Monica!\n'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
Section titled “1.11 Oväntad datatyp”Skriv ett uttryck som ger datatypen för resultatet av uttrycket '2' * '3'.
(ditt uttryck som ger datatypen) -> 'number'Lösningsförslag
Section titled “Lösningsförslag”> typeof ('2' * '3')'number'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
Section titled “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.
(ditt uttryck som visar om 17 är större än 11) -> true(ditt uttryck som visar om 17 är mindre än 11) -> falseLösningsförslag
Section titled “Lösningsförslag”> 17 > 11true> 17 < 11falseEn 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.
störst > minst -> trueminst < störst -> trueminst > störst -> falsestörst < minst -> false> 17 > 11true> 11 < 17true> 11 > 17false> 17 < 11false1.13 Det är logiskt
Section titled “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
Section titled “Lösningsförslag”> false && falsefalse> false && truefalse> true && falsefalse> true && truetrue> false || falsefalse> false || truetrue> true || falsetrue> true || truetrue- Operatorn
&&(AND, OCH) kräver att båda värdena ärtrueför att resultatet ska blitrue. - Operatorn
||(OR, ELLER) kräver att minst ena värdet ärtrueför att resultatet ska blitrue.
1.14 En samling med värden av samma typ
Section titled “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
Section titled “Lösningsförslag”> [3, -7, 12, 29, 9, 42, -2][ 3, -7, 12, 29, 9, 42, -2 ]1.15 En samling med värden av olika typ
Section titled “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
Section titled “Lösningsförslag”> { name: 'Killer', age: 3, weight: 2.3, breed: 'Chihuahua' }{ name: 'Killer', age: 3, weight: 2.3, breed: 'Chihuahua' }