코딩 테스트/프로그래머스

❌ [JS] 각도기 : filter( )

감귤밭호지차 2022. 12. 23. 18:26

 아직 해결되지 않은 궁금증이 있는 게시물 

 

문제 설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

 

#  내가 처음 짠 코드 

function solution(angle) {
    if(angle>0 && angle < 90){
        return 1;
    }else if (angle == 90) {
        return 2;
    } else if (angle >90 && angle < 180){
        return 3;
    } else if (angle == 180){
        return 4;
    }
}

 

 

 

# 다른 사람들의 번뜩이는 코드 방식(1)

function solution(angle) {
    return [0, 90, 91, 180].filter(x => angle>=x).length;
}

Q : angle이 0보다 크거나 같으면 length인 1

      angle이 90보다 크거나 같으면 length 인 2 ( 근데 그러면 170이 2, 3, 4 다 나올 수 있지 않나??)

     angle이 91보다 크거자 같으면 length인 3

    angle이 180보다 크거나 같으면 length인 4??

    

 

 

 


 

 

 

✔️사용한 함수 

 

①  filter ( )

filter함수는 배열의 각 요소를 순회하며 callback함수를 실행하며 조건에 맞는 요소만을 갖는 배열을 반환합니다. 

 

🔻arr.filter ( callback (element [, index[, array] ] ) [, thisArg] )

1. callback function

각 요소의 조건을 판단하는 함수 입니다. 

true를 반환하면 요소를 유지하고 false를 반환하면 제외합니다. 

      ⓐ element : 배열의 현재 요소

      ⓑ index (Optional) : 배열의 현재 요소의 인덱스

      ⓒ array(Optional) : 호출한 배열

 

const check = 적용할 배열.filter( 함수 이름 => 특정 조건 ) ; 

    

 

2. thisArg(Optional)

callback함수를 실행할 때 'this'로 사용되는 값 

 

3. 반환값 

배열을 순서대로 각 요소에 대해 callback 함수를 수행하고 true인 요소들만 이루어진 new 배열을 반환합니다. 

 

const numbers = [1, 2, 3, 4, 5];

const filter1 = numbers.filter(currentNumber => currentNumber%2 ===1);

console.log(filter1); // [ 1, 3, 5] 조건에 맞추어 홀수만 출력

 

 

 

🖍️ 더 나아가기 🖍️

 

 

① 

 

 

 

✳️참고 링크 : 

MDN - filter( )


※ 풀이 날짜 ※

2022.12.23