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;
}
제곱근이 정수면 약수의 개수가 홀수다
진수 변환
'항해 > TIL' 카테고리의 다른 글
TIL(2/17) / JS 이벤트 (0) | 2024.02.17 |
---|---|
TIL(2/15) / 객체, 변경불가성, 빌트인 객체 (0) | 2024.02.15 |
TIL(2/10) / DOM, 클래스, 클로저 (0) | 2024.02.10 |
TIL(2/8) / JS 4 (콜백함수, 동기/비동기) (0) | 2024.02.08 |
TIL(2/7) / JS 3 (실행 컨텍스트, this) (0) | 2024.02.07 |