나의 개발일지

[Javascript] reduce 본문

JavaScript/js 예제풀기

[Javascript] reduce

heew0n 2023. 10. 24. 23:54
// [요구사항]
// 아래 함수 multiply는 두 인자를 받아 곱한 값을 반환합니다. 해당 함수를 완성하십시오.

// [코드]
function multiply(a, b) {
    return a * b;
}

console.log(multiply(2, 3));


// [테스트]
// multiply(2, 3)은 6을 반환해야 합니다.


// -----------------------------------------------------


// [요구사항]
// 주어진 숫자 배열의 모든 요소를 더하는 함수 sumArray를 작성하세요.

// [코드]
const numbers = [1, 2, 3, 4, 5];

function sumArray(total, number) {
    return total + number;
}

const result = numbers.reduce(sumArray);
console.log(result)

// [테스트]
// sumArray([1, 2, 3, 4, 5])은 15를 반환해야 합니다.

// reduce() 함수는
// 배열의 모든 요소에 콜백 함수를 적용하여 하나의 결과 값을 생성하는 함수입니다.
// 배열의 요소들을 하나로 줄여(reduce) 집계한 값을 반환합니다.


//  reduce 함수 추가 학습
// 1. 배열의 모든 요소를 곱하기
const numbers1 = [2, 3, 4, 5];

function sum(total1, number1) {
    // total = accumulator : 초기값의 값이 accumulator 변수에 할당된다
    // number1 = currentValue : 배열의 첫 번째 요소 값이 currentValue 변수에 할당된다.
    return total1 * number1;
}

const result1 = numbers1.reduce(sum, 1);
console.log(result1);
// 틀린 이유 : reduce(sum, 1) <-- 1을 안 썼기 때문
// 위 코드에서는 초기 누적 값으로 1을 사용하고, 각 요소를 곱하여 결과를 누적
// 초기 누적 값을 0으로 설정하면 모든 값이 0으로 곱해지기 때문에
// 1을 사용해야 한다.


// 2. 배열의 최소값 찾기

const numbers3 = [5, 3, 9, 2, 7];

function findMin (x, y) {
    return x > y ? y : x;
}

const result2 = numbers3.reduce(findMin)
console.log(result2);


// 3. 배열의 최대값 찾기

const numbers4 = [5, 3, 9, 2, 7];

function findMax (x, y) {
    return x > y ? x : y
}

const result3 = numbers4.reduce(findMax)
console.log(result3);


// 4. 배열을 반환하는 방법
const numbers5 = [1, 2, 3, 4, 5];

function square(accumulator, currentValue) {
    accumulator.push(currentValue * currentValue)
    // push()는 배열에 끝에 넣어주는 요소!
    // currentValue * currentValue 의 값이 accumulator 초기값으로 설정해둔 []에 들어간다
    return accumulator;
    // 누적된 배열을 반환한다
}

const squareArray = numbers5.reduce(square, [])
                                    // 초기값을 [] 빈 배열로 사용 
console.log(squareArray);

 

 


'JavaScript > js 예제풀기' 카테고리의 다른 글

[Javascript] 보충반 강의 예제풀이(1)  (0) 2023.10.25