요즘 프로그래머스를 통해 코딩테스트 문제를 풀고있는데 풀면서 알게된 함수를 정리해보려고 합니다
Array.filter(callback(element[, index[, array]])[, thisArg])
filter 메서드는 직역을 통해서도 그 뜻을 추리해볼 수 있습니다. 말 그대로 어떤 값을 걸러주는 메서드로 볼 수 있는데요 정확한 filter 메서드의 정의는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. Mdn filter
문제로 들어가보면
배열안에있는 수 중 홀수와 짝수로 나누어 각각의 숫자를 이어 붙인 수 끼리 더한 값을 반환하는 문제입니다.
맨처음에는 map(),if()를 활용하여 문제를 해결하려고 했는데 코드도 길어지고 해결하면 해결할 수록 코드가 꼬이는 느낌이 들었습니다..(물론 제가 실력이 부족해서 지만..)
const solution = num_list => {
const odd = num_list.filter(x => x % 2 == 1).join("")
const even = num_list.filter(y => y % 2 == 0).join("")
return Number(odd) + Number(even)
}
저는 이렇게 filter 메서드를 활용해서 문제를 풀어봤습니다. 홀수와 짝수를 각각 다른변수로 선언하고 join()을 사용해서 배열의 모든 요소를 하나의 문자열로 이어 붙였습니다. 그리고 변수끼리 더한 값을 return을 해보니 타입이 string이여서 숫자 그대로가 이어지더라구요
ex) "359" + "26" = "35926"
그래서 Number()를 활용하여 숫자로 타입을 변경해주었더니 테스트에 통과했습니다!😆