개인공부/TIL(Today I Learned)

TIL 22일차_reduce()

soon327 2021. 2. 9. 01:04

reduce 연습하기


대표적인 배열 내장 메소드 중 reduce가 가장 어려운 것 같다.
조금더 익숙해질 때까지 반복 연습해야겠다.

ruduce 예제

  1. 객체배열에서의 값 합산.

객체로 이루어진 배열에 들어있는 값을 합산하기 위해서는 반드시 초기값을 줘야한다.

var initialValue = 0;
var sum = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulator, currentValue) {
    return accumulator + currentValue.x;
},initialValue)

console.log(sum) // 6
  1. 배열의 중복 항목 제거
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let result = arr.sort().reduce((accumulator, current) => {
    const length = accumulator.length
    if (length === 0 || accumulator[length - 1] !== current) {
        accumulator.push(current);
    }
    return accumulator;
}, []);
console.log(result); //[1,2,3,4,5]
  1. 속성으로 객체 분류하기
var people = [
  { name: 'Alice', age: 21 },
  { name: 'Max', age: 20 },
  { name: 'Jane', age: 20 }
];

function groupBy(objectArray, property) {
  return objectArray.reduce(function (acc, obj) {
    var key = obj[property];
    if (!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(obj);
    return acc;
  }, {});
}

var groupedPeople = groupBy(people, 'age');
// groupedPeople is:
// {
//   20: [
//     { name: 'Max', age: 20 },
//     { name: 'Jane', age: 20 }
//   ],
//   21: [{ name: 'Alice', age: 21 }]
// }

Today's ?!

  • 배열 메소드의 세번째 매개변수인 '현재 인덱스'값을 활용하면 식을 좀 더 유연하게 짤 수 있을 것 같다.
  • slice는 배열뿐만아니라 문자열에서도 사용가능하다. 자꾸까먹네

'개인공부 > TIL(Today I Learned)' 카테고리의 다른 글

TIL 24일차_재귀 익숙해지기  (0) 2021.02.11
TIL 23일차_정렬, 재귀  (0) 2021.02.10
TIL 21일차_Twittler과제  (0) 2021.02.08
TIL 20일차_용어,개념정리  (0) 2021.02.07
TIL 19일차_비동기,이벤트루프  (0) 2021.02.06