Array.filter
원래 3항 연산자를 활용해 쭉쭉 문제를 풀어나가던 나는 false일 때 값을 넣고싶지 않아서 결국 for문을 사용하게 되었다. 하지만 너무억울해서 혹시나 한줄로 깔끔하게 풀수있는 함수있나 찾아보던중 arr.filter 라는 함수를 알게 되었다. 얘는 조건을 만족할때만 arr에 자동으로 붙여주는 콜백 함수이다. 예를 들어 간단히 설명해보자.
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
이런 내용의 문제이다.
For문을 사용한 쉬운 함수
function solution(arr, divisor) {
let a = [];
for(let i=0;i<arr.length;i++){
if (arr[i]% divisor == 0){
a.push(arr[i])
}
}
return a.length == 0 ? [-1]: a.sort((b,c)=> b-c);
}
좀 더 줄여보기위해 사용한 filter 함수
function solution(arr, divisor) {
let answer = arr.filter( v => v % divisor == 0);
return answer.length == 0? [-1]: answer.sort((a,b)=>a-b)
}
임의의 변수 v는 arr에 들어있는 수. 그 수를 divisor로 나눈 값이 0이라면 arr에 자동으로 붙여줌.
위에서 구한 배열의 길이가 0이면 -1값을 도출 아니라면 배열을 작은값에서 큰값으로 배열 한다는 뜻이다.
이제 reduce랑 map함수만 알면 ... 왠만한건 다 아는것 같은데 ㅠㅠ 아직 그둘은 이해가 잘안된다.
'JavaScript' 카테고리의 다른 글
Array.map()함수 (0) | 2022.05.18 |
---|---|
arr관련 함수 (0) | 2022.05.18 |
노마드코더 바닐라 JS (0) | 2022.05.18 |
유레카 삼항연산자 (0) | 2022.05.14 |
Hello Javascript 강의 내용 정리 (0) | 2022.05.13 |
댓글