항해/TIL

TIL(2/13) / JS 메서드

yeeendy 2024. 2. 13. 21:34

35개 가량의 알고리즘 풀면서 내가 자주 헷갈리던 메소드를 정리해보자

 


 

isNaN

어떤 값이 NaN인지 판별

반환 값 : true or false

isNaN(NaN) //true
isNaN(undefined) //true
isNaN({}) //true
isNaN(true) //false
isNaN(null) //false
isNaN(37) //false

 


substr()

문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환

str.substr(start[, length])
  • start
    • 추출하고자 하는 문자들의 시작위치
    • 음수일 경우, 문자열총길이 + start의 값으로 취급
  • length
    • 추출할 문자들의 총 숫자
const str = 'yeeendy';
console.log(str.substr(3,2));  //'en'
console.log(str.substr(2)); //'eendy'
console.log(str.substr(-2)); //'dy'

Number.isInteger()

주어진 값이 정수인지 판별

Number.isInteger(value)
  • value : 정수인지 확인하려는 값
  • 반환 값 : true or false
Number.isInteger(0); // true
Number.isInteger(1); // true
Number.isInteger(-100000); // true

Number.isInteger(0.1); // false
Number.isInteger(Math.PI); // false

Number.isInteger(NaN); // false
Number.isInteger(Infinity); // false
Number.isInteger(-Infinity); // false
Number.isInteger("10"); // false
Number.isInteger(true); // false
Number.isInteger(false); // false
Number.isInteger([1]); // false

Number / parseInt 차이

  • Number()
    • 숫자 객체를 생성하는 생성자 함수
    • 만약 인수를 숫자로 변환할 수 없으면 NaN 리턴
  • parseInt
    • 문자열 인자를 파싱하여 특정 진수의 정수를 반환
Number("123"); // 숫자 123을 반환
Number("123") === 123; // 참

Number("unicorn"); // NaN
Number(undefined); // NaN

 

차이

숫자와 다른 문자가 섞였을 때 (e 제외)

Number('35dh'); // NaN
parseInt('35dh'); // 35

 


약수 개수

 

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}

 

제곱근이 정수면 약수의 개수가 홀수다

 


진수 변환