JS 내장함수 - Math.floor,parseInt,Math.trunc, reduce

예진·2024년 11월 5일
0
post-thumbnail

나는 현재 프로그래머스에 있는 코딩테스트 문제 중에서도 입문 문제 100제를 풀고 있다.
그렇게 미루고 미루다가 이제는 더이상 물러날 곳이 없을 때
(항상 저 춤을 추며 압박감을 견디며 level 2를 풀다가 현타가 와서 몇 개월 안보고 풀다가 현타오고 계속 반복)

오히려 마음이 아 슬슬 풀어야겠다 하면서 가볍게 생각하며 풀어보니까 더 잘되는 것 같고 사실 난이도를 아주 낮췄다. 그러면서 확실히 내 위치를 알게 되었다.
내장함수조차 잘 모르는데 어캐 코테를 푸는데~~ 알고리즘 백날 알아도 js를 잘 모르는데~~
각설하고 입문 문제 풀면서 모르는 내장함수를 좀 깊게 찾아보고자 글을 쓰려고한다. 예시나, 내가 문풀하면서 다른 사람 문풀도 볼 수 있는데 그것도 참고할 것 같다.

Math.Floor

소수값이 존재할 때 소수값을 버리는 역할을 한다.
값이 음수일 때 결과 값이 아래와 같이 음수에서 -1 더 더해졌다.
이것으로 보아
Math.Floor는 소수값을 버리면서 내림하는 역할도 하는 것을 확인할 수 있다.

var result = Math.Floor(-22.4);
console.log(result);//-23
  • Math.floor()와 따라다니는 또다른 함수
    • Math.ceil : 소수값을 올림하는 함수
      값이 음수일 때 -4(내림)이 아니라 -3(올림)으로 표현
      Math.ceil(3.2);  //4
      Math.ceil(-3.2); //-3
      Math.ceil(null); //0
    • Math.round : 소수값을 반올림하는 함수
      	Math.round(1.5); //2
      	Math.round(-1.5);//-1

      올림 반올림 내림할 때 음수값을 주의하기!

parseInt

문자열에서 숫자를 추출하기 위한 함수이다.
문자열에 숫자가 맨 앞에 존재하면 해당 숫자를 추출할 수있지만, 그렇지 않으면 NaN을 출력한다.

  • 예외처리 NumberFormatException
    문자열에 숫자가 포함되지 않을 경우 NumberFormatException를 반환한다.
  • 두번째 매개변수 ParseInt(num,radix);
    두 번째 매개변수로 radix를 받는다. 매개변수로는 사용할 숫자 진법을 지정한다. radix가 생략되면 10을 기본값으로 사용한다.
    • 두번째 매개변수를 16진수라고 할 때 대소문자 구분없이 표현 가능하다.
parseInt('F', 16); // 15
  • parseInt 와 비슷한 +(단항 연산자)
    단항 더하기 연산자(+)는 피연산자 앞에 위치하며 피연산자를 평가하지만, 만약 피연산자가 숫자가 아니라면 숫자로 변환 시킨다.
    parseInt 와 다른 점은 문자열에서 숫자를 추출시키진 못한다.
console.log(+'');     // 0
console.log(+true);   // 1
console.log(+false);  //0
console.log(+'hello');//NaN

Math.trunc

The Math.trunc() method returns the integer part of a number.
정수부분만 리턴해주는 함수.
올림이나 내림을 하지 않고 소수점 이하는 버린다.
위 ceil,floor,round 함수와 다르게 음수값은 음수의 정수값 그대로 나온다.

 Math.trunc(-2.32); //-2
 Math.trunc(8.76);  //8
  • Math.trunc(버림) vs Math.floor(내림)
    둘 중에서 가장 큰 차이점은 floor은 음수에서 나타난다. 내림하려는 숫자에서 -1이 추가되어 더 낮은 값으로 표현한다.

reduce

reduce에 대한 여러 글을 읽었는데 생각보다 reduce가 다루는 내용이 많은 가보다. 객체도 나오고 숫자도 나오고 인덱스 어쩌구.. 배열에서 주로 사용하는 함수여서 그런 것 같은데 한번 차근차근 확인해보자.

  • reduce의 구문
    아래 보이는 것과 같이 변수나 상수가 들어가는 것이 아닌 함수가 들어간다.

arr.reduce(callback[, initialValue])

예시. 내가 코드문제 풀다가 되게 깔끔하게 풀었꼬 reduce를 쓰는 함수라서 저장해놨던 기억이 있다.
여기서는 화살표 함수를 변수로 넣어놨다.

  • reduce 함수의 요소들
    callback
    배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 받는다.

    • accumulator
      누산기는 콜백의 반환값을 누적한다. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값
      이다.
    • currentValue
      처리할 현재 요소.
    • currentIndex (선택사항)
      처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작
    • array (선택사항)
      reduce()를 호출한 배열.
//numbers = [0,1,2,3,4];
function sol(numbers){
	var answer = numbers.reduce((a,b)=>a+b,0)/numbers.length;
	return answer;

함수를 넣을 때도 그 함수의 변수값이 정해져있어 보였다.
위에서 a값과 b값나타내는 값은 각각 accumulator,currentValue이다.

풀이를 해보자면..

첫반복 : a에 0번째 인덱스 값 0, 현재값 1번째 인덱스 값1 => 0 + 1 = 1
두번째 반복 : a에 첫반복 값 1, 현재값 2번째 인덱스 값2 => 1 + 2 = 3
세번째 반복 : a에 두번째 반복 값 3, 현재값 3번째 인덱스 값3 => 3 + 3 = 6
네번째 반복 : a에 세번째 반복 값 6, 현재 값 4번째 인덱스 값4 => 6 + 4 =10
최종 반환값 : 10

음 reduce는 간단하게 이렇게 정리하고 따로 reduce글을 작성해야될 것 같다. 생각보다 매개변수들도 많고 매개변수마다 환경이 달라지는 것 같다.


Chamgo

reduce
ceil,floor,round
단항연산자

0개의 댓글

관련 채용 정보