- C-nivå
- GitBook
- Lösningsförslag
VIKTIGT! Innan du börjar arbeta med övningsuppgiften är det viktigt att du följer guiden Att komma igång med en övningsuppgift för att lägga till övningsuppgiftens repo till ditt repo för övningsuppgifter.
Hämta hem övningsuppgiftens repo och lägg till en .gitignore-fil. Öppna filen src\abacus.js
och komplettera funktionen add
så att samtliga krav uppfylls.
Du ska skapa en mycket enkel räknemodul som klarar av att summera att fritt antal parametrar i form av nummer (heltal som decimaltal), och returnera summan.
const abacus = require('./src/abacus.js')
let sum = abacus.add(2, 5, 19)
console.log(sum) // 26
Funktionen ska kunna hantera att anropas med en eller flera strängar där varje sträng ska kunna konverteras till ett tal. Även en eller flera arrayer med värden ska kunna skickas som argument till funktionen.
const abacus = require('./src/abacus.js')
let sum = abacus.add(2, "21", 19)
console.log(sum) // 42
sum = abacus.add(2.5, "5", "3,5", "1.2") // OBS! Både decimalkomma(,) och decimalpunkt(.) ska fungera
console.log(sum) // 12.2
sum = abacus.add(1, 2, [3, 4], 5, [6, 7]) // OBS! Det ska gå att skicka med arrayer som argument
console.log(sum) // 28
Vill du göra det extra svårt för dig? Se till att metoden klara av att hantera nästlade arrayer, d.v.s. arryer inuti arrayer, vilket kräver någon form av rekursion.
sum = abacus.add(1, 2, [3, 4, [6, 7]], 5]) // OBS! Det ska gå att skicka med nästlade arrayer som argument
console.log(sum) // 28
Anropas funktionen där något av värdena inte är ett tal eller inte kan konverteras till ett tal ska ett undantag av typen TypeError
kastas med meddelandet At least one of the arguments can't be parsed as a number.
.
let abacus = require('./src/abacus.js')
let sum
try {
sum = abacus.add(3, 8, 5, true) // must throw an exception
console.log(sum)
} catch (e) {
console.error(e.message)
}
try {
sum = abacus.add(3, 8, 5, 'lorem ipsum') // must throw an exception
console.log(sum)
} catch (e) {
console.error(e.message)
}
// Output:
// At least one of the arguments can't be parsed as a number.
// At least one of the arguments can't be parsed as a number.
Genom att köra testerna som kommer med övningsuppgiften kan du undersöka om koden du skrivit löst uppgiften (i alla fall enligt testerna...).
Funktioner, metoder, etc. som kan komma till användning beroende hur du väljer att lösa uppgiften.