reduce 연습하기
대표적인 배열 내장 메소드 중 reduce가 가장 어려운 것 같다.
조금더 익숙해질 때까지 반복 연습해야겠다.
ruduce 예제
- 객체배열에서의 값 합산.
객체로 이루어진 배열에 들어있는 값을 합산하기 위해서는 반드시 초기값을 줘야한다.
var initialValue = 0;
var sum = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulator, currentValue) {
return accumulator + currentValue.x;
},initialValue)
console.log(sum) // 6
- 배열의 중복 항목 제거
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]
- 속성으로 객체 분류하기
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 |