Szám visszafordítása a JavaScript-ben

Példák nyílfüggvény és normál JS függvény használatára

A karakterlánc megfordítása vagy a szám megfordítása az egyik leggyakrabban feltett kérdés a programozási interjúk során. Vizsgáljuk meg, hogyan történik ez.

Szabályok / korlátozások :

  • A negatív számoknak negatívnak kell maradniuk.

volt. -12345válik-54321

  • Minden vezető nullát el kell távolítani.

volt. 321000válik 123& nem000123

  • A függvény úszókat vagy egész számokat képes elfogadni.

volt. 543.2100válik12.345

  • A függvény egész számokat ad vissza egész számként.

volt. 54321válik 12345& nem12345.00

Nyílfunkcióval történő megoldás:

const reversedNum = num => parseFloat(num.toString().split('').reverse().join('')) * Math.sign(num)

Megoldás normál funkcióval:

function reversedNum(num) { return ( parseFloat( num .toString() .split('') .reverse() .join('') ) * Math.sign(num) ) }

A nyíl és a normál funkció közötti különbség:

Ebben a példában az egyetlen különbség a Nyíl függvény és a Rendszeres függvény között az, hogy a Rendszeres függvénynek explicit returnértéket kell megadnia .

A nyílfüggvényeknek implicit returnértéke van - ha egy sorba írhatók, a {}zárójelek használata nélkül.

Bontjuk le a lépéseket:

  • Konvertálja a számot karakterlánccá

num.toString()az adott számot String-vé alakítja. Tesszük ezt, hogy a következő splitfunkciót használhassuk rajta.

let num = -5432100 num.toString() // num = '-5432100'
  • Bontsa a húr tömbre

num.split('')a karakterláncot karaktertömbökké alakítja. Ezt azért tesszük, hogy használhassuk az Array reverse funkciót ( ami nem működik egy String-en ).

// num = '-5432100' num.split('') // num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
  • Fordítsa meg a tömböt

num.reverse() megfordítja a tömb elemeinek sorrendjét.

// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ] num.reverse() // num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
  • Csatlakozzon vissza egy húrba

num.join('') újra összeállítja a megfordított karaktereket karakterlánccá.

// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ] num.join('') // num = '0012345-'
  • A bemeneti érték lebegőpontos számgá elemzése :

parseFloat(num)Stringből úszóvá alakul num.

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

Megjegyzés :parseFloata végén fut (annak ellenére, hogy a függvény első sorában van) a megfordított számon, és eltávolítja az összes vezető nullát.

  • Szorozzuk meg az eredeti szám előjellel - a negatív érték fenntartása érdekében.

num * Math.sign(num) megszorozza a számot az eredeti szám előírásával.

// original value of num = -5432100 // num = 12345 num * Math.sign(-5432100) // num = -12345

És itt van!