Kako obrnuti broj u JavaScript-u

Primjeri korištenja funkcije strelice i redovite JS funkcije

Obrtanje niza ili poništavanje broja jedno je od čestih pitanja koja se postavljaju na programskim intervjuima. Pogledajmo kako se to radi.

Pravila / Ograničenja :

  • Negativni brojevi trebali bi ostati negativni.

pr. -12345postaje-54321

  • Sve vodeće nule treba ukloniti.

pr. 321000postaje 123& ne000123

  • Funkcija može prihvatiti plutajuće ili cijele brojeve.

pr. 543.2100postaje12.345

  • Funkcija će vratiti cijele brojeve kao cjelobrojne.

pr. 54321postaje 12345& ne12345.00

Rješavanje pomoću funkcije strelice:

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

Rješavanje redovnom funkcijom:

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

Razlika između funkcije strelice i regularne funkcije:

U ovom primjeru jedina razlika između funkcije strelice i funkcije Regular je u tome što funkcija Regular mora pružiti eksplicitnu returnvrijednost.

Funkcije strelica imaju implicitnu returnvrijednost - ako se mogu pisati u jedan redak, bez potrebe za {}zagradama.

Podijelimo korake:

  • Pretvori broj u niz

num.toString()pretvara zadani broj u niz. To radimo kako bismo mogli koristiti splitfunkciju na njemu sljedeće.

let num = -5432100 num.toString() // num = '-5432100'
  • Podijelite niz u niz

num.split('')pretvara niz u niz znakova. To činimo kako bismo mogli koristiti funkciju Array reverse ( koja ne radi na nizu ).

// num = '-5432100' num.split('') // num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
  • Obrni niz

num.reverse() obrće redoslijed stavki u polju.

// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ] num.reverse() // num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
  • Spojite ga natrag u niz

num.join('') ponovno sastavlja obrnute znakove u niz.

// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ] num.join('') // num = '0012345-'
  • Analizirajte ulaznu vrijednost na broj s pomičnim zarezom:

parseFloat(num)pretvara numu float iz niza.

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

Napomena :parseFloatizvodi se na kraju (iako je u prvom retku funkcije) na obrnutom broju i uklanja sve nule u početku .

  • Pomnožite ga znakom izvornog broja - da biste održali negativnu vrijednost.

num * Math.sign(num) množi broj znakom izvornog broja koji je naveden.

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

I, eto vam!