Articolo originale: https://www.freecodecamp.org/news/js-basics-how-to-reverse-a-number-9aefc20afa8d/

di artismarti

Esempi che utilizzano una funzione freccia e una normale funzione JS

Invertire una stringa o invertire un numero è una delle domande più comuni poste durante i colloqui tecnici per lavori di programmazione. Diamo un'occhiata a come si fa.

Regole/Limiti :

  • I numeri negativi dovrebbero rimanere negativi.

ex. -12345 diventa -54321

  • Eventuali zeri iniziali devono essere rimossi.

ex. 321000 diventa 123 e non 000123

  • La funzione può accettare numeri decimali o interi.

ex. 543.2100 diventa 12.345

  • La funzione restituirà numeri interi come numeri interi.

ex. 54321 diventa 12345 e non 12345.00

Soluzione con una funzione freccia:

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

Soluzione con una funzione regolare:

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

Differenza tra una funzione freccia e una funzione regolare:

In questo esempio, l'unica differenza tra la funzione freccia e la funzione regolare è che la funzione regolare deve fornire un valore di return esplicito.

Le funzioni freccia hanno un valore di return implicito, se possono essere scritte in una riga, senza la necessità delle parentesi graffe {}.

Analizziamo i passaggi:

  • Converti il ​​numero in una stringa

num.toString()converte il numero dato in una stringa. Lo facciamo in modo da poter utilizzare la successiva funzione split .

let num = -5432100
num.toString()

// num = '-5432100'
  • Dividi la stringa in un array

num.split('') converte la stringa in una array di caratteri. Lo facciamo in modo da poter usare la funzione reverse di Array (che non funziona su una stringa).

// num = '-5432100'

num.split('')

// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
  • Invertire l'array

num.reverse() inverte l'ordine degli elementi nell'array.

// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]

num.reverse()

// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
  • Uniscilo di nuovo in una stringa

num.join('') riassembla i caratteri invertiti in una stringa.

// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]

num.join('')

// num = '0012345-'
  • Converti il valore di input in un numero a virgola mobile:

parseFloat(num)converte num in float da una stringa.

// num = '0012345-'

parseFloat(num)

// num = 12345

Nota : parseFloat viene eseguito alla fine (anche se è sulla prima riga della funzione) sul numero invertito e rimuove gli zeri iniziali.

  • Moltiplicalo per il segno del numero originale per mantenere il valore negativo.

num * Math.sign(num) moltiplica il numero con il segno del numero originale.

// valore originale di num = -5432100
// num = 12345

num * Math.sign(-5432100)

// num = -12345

E il gioco è fatto!