정수 배열 arr
과정수 n
이 매개변수로 주어집니다.
arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을,
arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.
- 배열의 길이가 짝수인지 홀수인지 판별한다. (0도 짝수 인덱스로 취급한다.)
- 배열을 돌면서
n
을 더해준다. 홀수라면 index 0,2,4... | 짝수라면 index 1,3,5...
function solution(arr, n) {
const result =
arr.length % 2 === 0
? arr.map((num, idx) => (idx % 2 === 0 ? num : num + n))
: arr.map((num, idx) => (idx % 2 !== 0 ? num : num + n));
return result;
}
solution([49, 12, 100, 276, 33], 27); // [76, 12, 127, 276, 60]
1️⃣ 번 풀이
function solution(arr, n) {
const result = arr.map((num, idx) => {
if (arr.length % 2 === 0) {
// 배열의 길이가 짝수일 때
return idx % 2 !== 0 ? num + n : num;
} else {
// 배열의 길이가 홀수일 때
return idx % 2 === 0 ? num + n : num;
}
});
return result;
}
2️⃣ 번 풀이
const solution = (arr, n) => arr.map((num, idx) => (
arr.length % 2 !== idx % 2
? num + n
: num
))
map
메서드가 아닌filter
로 처음에 접근했었다.짝수와 홀수를 거른다라는 생각에서 비롯되었는데, 이는 잘못된 접근이었다.
✅ 왜 잘못된 접근이었나⁉️
filter
메서드는 주어진 조건을 만족하는 요소만을 포함하는 새로운 배열을 반환한다.map
메서드는 각 요소를 원하는 방식으로 변환하여 새로운 배열을 반환할 수 있다.
map
메서드는 데이터를 재가공하는데 유용한 메서드이고,
filter
메서드는 데이터 가공이 목적이 아니라 기존 데이터에서 특정한 조건의 데이터를 추출한다.