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. -12345bliver til-54321

  • Eventuelle ledende nuller skal fjernes.

eks. 321000bliver 123& ikke000123

  • Funktionen kan acceptere floats eller heltal.

eks. 543.2100bliver til12.345

  • Funktionen returnerer heltal som heltal.

eks. 54321bliver 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 returnværdi.

Pilfunktioner har en implicit returnvæ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 splitfunktionen 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 numtil en svømmer fra en streng.

// num = '0012345-' parseFloat(num) // num = 12345

Bemærk :parseFloatkø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!