딱히 별 다른 기똥찬 방법이 생각나지 않아서 if, else if를 써서 해결했다.
function solution(angle) {
if(0<angle && angle<90)
{return 1;}
else if(angle==90)
{return 2;}
else if(90<angle && angle<180)
{return 3;}
else {return 4;}
}
다른 사람의 풀이를 구경하다가 filter()를 발견했다.
위 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 '새로운 배열'로 반환한다.
filter()는 호출되는 배열을 변화시키지 않는다.
또한 filter() 호출 시작 이후로 배열에 추가/삭제되는 요소는 반영되지 않는다.
arr.filter(callback(element[, index[, array]])[, thisArg])
처리할 현재 요소로, arr의 각 요소를 나타낸다. 즉, arr의 첫번째 요소부터 마지막 요소까지 모두 순회하며 조건에 맞으면 해당 요소만을 뽑아 새로운 배열에 추가한다는 것이다.
처리할 현재 요소의 인덱스
[0, 90, 91, 180].filter(x => angle>=x).length
Array.prototype.filter()의 반환값이 조건에 해당하는 '새로운 배열'임을 알고 있어야 쓸 수 있는 코드였다.
https://blog.naver.com/lcyeon46/223087185275
다른 사람의 풀이인데, 삼항연산자를 사용했다.
function solution(angle) {
return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}
개인적으로 삼항연산자를 중첩해서 쓰는 걸 안 좋아하는데, 그 이유는
1. 내가 고민을 많이 해야함
2. 읽기에 어려움. 뜻이 이해 안 됨
그렇지만 한 줄에 쓰기엔 좋아서 나중에 참고하기 위해 기록해 놓는다.