[TS] Parse a string to an integer

A common interview question is to write
 a
function
that
converts
 a
 string
into
an
integer e.g. "123" => 123.
 This
 function 
is commonly
 called
 atoi because
 we
 are
 converting
 an
 ASCII
 string
 into 
an 
integer.

In this lesson we cover the proper way to do this in JavaScript which is parseInt along with implementing it using basic ascii math.

 

Writing a function whichi convert string to number, to do that

1. Convert each "string" char to ASCII code by using 

str.charCodeAt(index)

2. Each round, we should increase the acc value by *10

function atoi (str: string): number {
  const zeroCode = '0'.charCodeAt(0);
  console.log("zeroCode", zeroCode);
  
  let sub = 1;
  if(str[0] === '-') {
    sub = -1;
    str = str.substring(1);
    console.log("sub string", str);
  }
  
  return sub * str.split('')
    .reduce((acc, curr) => {
    acc = acc * 10 + (curr.charCodeAt(0) - zeroCode)    
    return acc;
     }, 0)
}

console.log(atoi("123")); //123
console.log(atoi("-123")); //-123
import { atoi } from './atoi';

test('basic', () => {
  expect(atoi('123')).toBe(123);
  expect(atoi('-1123')).toBe(-1123);
});
原文地址:https://www.cnblogs.com/Answer1215/p/7623896.html