map()
let arr = [1,2,3,4,5];
let newArr = arr.map( (val, idx) => val * val );
console.log ( newArr ); // [1,4,9,16,25]
const band = [
{
name:'corbett',
instrument:'guitar'
},
{
name:'evan',
instrument:'bass'
},
{
name:'sean',
instrument:'piano'
},
{
name:'brett',
instrument:'drums'
},
]
const instruments = band.map(member => member.instrument);
console.log(instruments)
//['guitar','bass','piano','drums']
filter()
let users = [
{ id: 11, name: 'Adam', age: 23, group: 'editor' },
{ id: 47, name: 'John', age: 28, group: 'admin' },
{ id: 85, name: 'William', age: 34, group: 'editor' },
{ id: 97, name: 'Oliver', age: 28, group: 'admin' }
];
let res = users.filter(it => it.name.includes('oli'));
console.log(res);
// res is []
reduce
//사칙연산
let arr = [ 13, 63, 29, 57];
let sum = arr.reduce((total, val, idx, arr) => total + val, 0);
console.log(sum);// 162
// arr의 최대값과 최소값을 구해보자!
// 초기값이 선언되지 않으면 첫번째 값이 초기값이 된다.
let arr = [ 13, 63, 29, 57];
let isMaxNum = arr.reduce((total, val) => total > val ? total : val);
let isMinNum = arr.reduce((total, val) => total < val ? total : val);
console.log(isMaxNum); // 63
console.log(isMinNum); // 13
//reduce로 배열에 2곱하기 map에 2곱하기
let data = [1, 2, 3];
// 1. reduce 사용예시
let doubled1 = data.reduce(function(acc, value) {
acc.push(value*2);
return acc;
}, []) // 초기값을 써주는 것을 잊지 말자!
// 2. map 사용예시
let doubledMap = data.map(el => el*2);
console.log(doubled1) // [2, 4, 6]
console.log(doubledMap) // [2, 4, 6]
// 평균값 구하는 누적 계산식
let arr = [1,2,3,4,5];
let res = arr.reduce( (acc, val, idx) => { // acc는 누적값, val은 들어오는 배열값, idx는 인덱스값(순서값)
let avg = acc + val; // 누적값 + 배열값
if ( idx == arr.length-1 ){ // 마지막 index에서 나눠서 평균값 계산
avg = avg / arr.length;
}
return avg; // return 값은 다음 반복의 acc으로 간다.
}, 0); // 0은 초기 acc값
console.log( res ); // 3
코드샌드박스 ->
https://codesandbox.io/s/practical-faraday-yp7wjl?file=/src/index.js:300-413
반복문 리액트에서 활용 ->
https://codesandbox.io/s/bilions-project-forked-86d76u?file=/pages/index.js
연습문제
function biggerThanThree(numbers) {
/* 3보다 큰 숫자로 이루어진 배열 반환 */
}
const numbers = [1, 2, 3, 4, 5, 6, 7];
console.log(biggerThanThree(numbers)); // [4, 5, 6, 7]