정골라코딩
[JavaScript] map, filter, reduce 구현 본문
문제 설명)
1. map 함수를 구현하세요.
- map 함수는 배열의 각 원소를 변환한 새로운 배열을 반환합니다.
- func - (현재 아이템) => 변환된 아이템 형식입니다.
- ex) item => item * 2 함수는 배열의 모든 원소에 *2를 적용합니다.
- array의 내장 map 함수를 쓰지 않고, for문을 이용해 구현해보세요.
2. filter 함수를 구현하세요.
- filter 함수는 배열의 각 원소 중 조건에 해당하는 원소만 들어있는 새로운 배열을 반환합니다.
- func - (현재 아이템) => 조건(true or false) 형식입니다.
- ex) item => item > 5 함수는 5보다 큰 값들만을 반환합니다.
- array의 내장 filter 함수를 쓰지 않고 구현해보세요.
3. reduce 함수를 구현하세요.
- reduce 함수는 배열의 각 원소를 함수에 맞게 합성해 하나의 값을 반환합니다.
- func - (합쳐진 값, 현재 아이템) => ‘새로운 값’ 의 형식입니다.
- initialValue - 초깃값입니다. 초깃값은 반드시 주어져야 합니다.
- ex) (acc, cur) => acc + cur 함수는 배열의 모든 원소를 합칩니다.
- array의 내장 reduce 함수를 쓰지 않고 구현해보세요.
Tip
- 작성한 map, filter, reduce 함수에 들어가는 인자들은 App.js에서 확인할 수 있습니다.
- 예를 들어, map(array, func)에서 func는, App.js에서 아래 코드를 참조하면, (item) => item * 2 라는 화살표 함수입니다.
mapButton.addEventListener("click", () => {
const newArray = arrayFunctions.map(currentArray, (item) => item * 2);
result.innerHTML = `map 함수 결과 : ${JSON.stringify(newArray)}`;
});
const arrayFunctions = {
map(array, func){
// map 함수를 구현하세요.
// map 함수는 배열의 각 원소를 변환한 새로운 배열을 반환합니다.
// func - (현재 아이템) => 변환된 아이템 형식입니다.
// ex) item => item * 2 함수는 배열의 모든 원소에 *2를 적용합니다.
// array의 내장 map 함수를 쓰지 않고, for문을 이용해 구현해보세요.
let newArray = [];
// for(let i=0; i<array.length; i++){
// newArray.push(array[i]*2);
// }
array.forEach((elem)=>{
newArray.push(func(elem));
})
return newArray;
},
filter(array, func) {
// filter 함수를 구현하세요.
// filter 함수는 배열의 각 원소 중 조건에 해당하는 원소만 들어있는 새로운 배열을 반환합니다.
// func - (현재 아이템) => 조건(true or false) 형식입니다.
// ex) => item => item > 5 함수는 5보다 큰 값들만을 반환합니다.
// array의 내장 filter 함수를 쓰지 않고 구현해보세요.
let newArray = [];
array.forEach((elem)=>{
if(func(elem)) {
newArray.push(elem);
}
})
return newArray;
},
reduce(array, func, initialValue) {
// reduce 함수를 구현하세요.
// reduce 함수는 배열의 각 원소를 함수에 맞게 합성해 하나의 값을 반환합니다.
// func - (합쳐진 값, 현재 아이템) => '새로운 값' 의 형식입니다.
// initialValue - 초기값입니다. 초기값은 반드시 주어져야 합니다.
// ex) (acc, cur) => acc + cur 함수는 배열의 모든 원소를 합칩니다.
// array의 내장 reduce 함수를 쓰지 않고 구현해보세요.
let result = initialValue;
array.forEach((elem)=>{
result=func(result, elem);
})
return result;
},
};
export default arrayFunctions;
'JavaScript > 연습문제' 카테고리의 다른 글
[JavaScript] String 바꾸기 (0) | 2022.09.29 |
---|---|
[JavaScript] Rest Operator (0) | 2022.09.29 |
[JavaScript] this로 event 접근하기 (0) | 2022.09.29 |
[JavaScript] class (0) | 2022.09.27 |
[JavaScript] reduce() 함수 (0) | 2022.09.27 |