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.
Uppgift
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.
constabacus=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.
constabacus=require('./src/abacus.js')let sum =abacus.add(2,"21",19)console.log(sum) // 42sum =abacus.add(2.5,"5","3,5","1.2") // OBS! Både decimalkomma(,) och decimalpunkt(.) ska fungeraconsole.log(sum) // 12.2sum =abacus.add(1,2, [3,4],5, [6,7]) // OBS! Det ska gå att skicka med arrayer som argumentconsole.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 kan kräva någon form av rekursion.
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..
Tips
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.
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
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.