Sådan vender du et nummer i JavaScript
Eksempler, der bruger en pilfunktion og almindelig JS-funktion

At vende en streng eller vende et nummer er et af de almindelige spørgsmål, der stilles ved programmeringsinterviews. Lad os se på, hvordan dette gøres.
Regler / begrænsninger :
- Negative tal skal forblive negative.
eks. -12345
bliver til-54321
- Eventuelle ledende nuller skal fjernes.
eks. 321000
bliver 123
& ikke000123
- Funktionen kan acceptere floats eller heltal.
eks. 543.2100
bliver til12.345
- Funktionen returnerer heltal som heltal.
eks. 54321
bliver 12345
& ikke12345.00
Løsning med en pilefunktion:
const reversedNum = num => parseFloat(num.toString().split('').reverse().join('')) * Math.sign(num)
Løsning med en regelmæssig funktion:
function reversedNum(num) { return ( parseFloat( num .toString() .split('') .reverse() .join('') ) * Math.sign(num) ) }
Forskel mellem en pilefunktion og en almindelig funktion:
I dette eksempel er den eneste forskel mellem pilefunktionen og den almindelige funktion, at den almindelige funktion skal give en eksplicit return
værdi.
Pilfunktioner har en implicit return
værdi - hvis de kan skrives i en linje uden behov for {}
seler.
Lad os nedbryde trinnene:
- Konverter nummeret til en streng
num.toString()
konverterer det givne nummer til en streng. Vi gør dette, så vi kan bruge split
funktionen på det næste.
let num = -5432100 num.toString() // num = '-5432100'
- Opdel strengen i en matrix
num.split('')
konverterer strengen til en række karakterer. Vi gør dette, så vi kan bruge funktionen Array reverse ( som ikke fungerer på en streng ).
// num = '-5432100' num.split('') // num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
- Vend Array
num.reverse()
vender rækkefølgen på elementerne i arrayet.
// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ] num.reverse() // num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
- Slut det tilbage i en streng
num.join('')
samler de omvendte tegn om til en streng.
// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ] num.join('') // num = '0012345-'
- Parse inputværdien i et flydende nummer:
parseFloat(num)
konverterer num
til en svømmer fra en streng.
// num = '0012345-' parseFloat(num) // num = 12345
Bemærk :parseFloat
kører i slutningen (selvom det er på første linje i funktionen) på det omvendte tal og fjerner eventuelle førende nuller.
- Multiplicer det med tegnet på det originale nummer - for at opretholde den negative værdi.
num * Math.sign(num)
ganger tallet med tegnet på det angivne originale nummer.
// original value of num = -5432100 // num = 12345 num * Math.sign(-5432100) // num = -12345
Og der har du det!