728x90
reduce
  •  4가지 인자 : reviousValue, currentValue, currentIndex, array
  • 더 간단하게 → "누산기(acc), 현재값(cur), 현재 인덱스(idx), 원본 배열(src)" 라고 한다.
  • 반환 값은 누산기(acc)에 할당되며, 누산기는 순회 중 유지뵈므로 최정 결과는 하나의 값이 된다.

 

01. 배열 요소 전체 합

const ar = [1,2,3,4,5];
let reducer = ar.reduce(
    (reviousValue, currentValue, currentIndex, array) =>{
        console.log("(", reviousValue, ", ", currentValue, ")");
        console.log("궁금한 값 : ", reviousValue+currentValue);
        return reviousValue+currentValue
    }
);


02. 객체 배열 값 합산

const ar = [
    {x:1},
    {x:2},
    {x:3}
]

let reducer = ar.reduce(
    (acc, cur, idx, src) => {
        console.log(cur.x);
        return acc + cur.x
    },0,0,0
);
console.log("정답 : ", reducer);


03. 중첩 배열 펼치기

const ar = [[0, 1], [2, 3], [4, 5]];
let reducer = ar.reduce(
    (acc, cur, idx, src)=>{
        console.log(acc);
        return acc.concat(cur)
    }, []
)
console.log("result : ", reducer);


04. 객체 내 값 인스턴스 개수 세기

const ar = ['Tiger', 'Lion', 'Turtle', 'Tiger', 'Tiger'];

let reducer = ar.reduce(
    (acc, cur, idx, src)=>{
        if (cur in acc){
            acc[cur]++;
        }else{
            acc[cur]=1
        }
        console.log(acc);
        return acc
    },{}
)
console.log("result", reducer);


05. 배열의 중복 항목 제거

const ar = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let reducer = ar.sort().reduce(
   (acc, cur, idx, src)=>{
       let length = acc.length;
       if (length === 0 || acc[length-1] !== cur){
           acc.push(cur);
       }
       console.log(acc);
       return acc;
   }, []
)
console.log("result : ",reducer);


06. map으로 사용하기

const ar = [1, 2, 3, 4, 5];
let reducer = ar.reduce(
    (acc, cur)=>{
        acc.push(cur*2);
        console.log(acc);
        return acc
    },[]
)
console.log("result : ", reducer);

배열 각 요소 2배씩 늘리기


07. filter로 사용하기

const ar = [1, 2, 3, 4, 5];
let reducer = ar.reduce(
    (acc, cur)=>{
        if(!(cur % 2)) acc.push(cur)
        console.log(acc);
        return acc
    },[]
)
console.log("result : ", reducer);

짝수 필터링 하기


08. 속성으로 객체 분류하기

const people = [
    {name:'A', age : 23},
    {name:'B', age : 26},
    {name:'C', age : 26},
    {name:'D', age : 28}
];

function groupBy(objectArray, property){
    return objectArray.reduce(
        (acc, cur)=>{
            let key = cur[property];
            if(!acc[key]){
                acc[key]=[];
            }
            acc[key].push(cur);
            console.log(acc);
            return acc;
        }, {}
    );
}

console.log(groupBy(people, 'age'));

26살이 두명이다!!

 


09. 

728x90

+ Recent posts