forEach
자바의 향상된 for문과 비슷하며 자바스크립트 for of 처럼 배열의 값을 반복으로 출력할때 사용한다
주로 for of 보다는 forEach를 활용해서 출력한다.
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];
superheroes.forEach(hero => {
console.log(hero);
});
map
배열안의 원소들을 변환할때 사용되며 map을 사용하면 새로운 배열이 만들어진다.
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const square = n => n * n;
const squared = array.map(square);
console.log(squared);
findIndex
배열안에 있는 값이 숫자, 문자열 or boolean 일 경우 몇번째 원소인지 알아내려면 indexOf를 사용하나
배열안에 있는 값이 객체이거나 배열이라면 findIndex 를 사용한다
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
const index = todos.findIndex(todo => todo.id === 3);
console.log(index);
find
findIndex와 비슷하나 찾아낸 값이 몇번째인지를 반환하는것이 아닌 찾아낸 값의 배열의 값들을 자체 반환한다
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
const todo = todos.find(todo => todo.id === 3);
console.log(todo);
filter
특정 조건을 만족하는 값들로만 따로 추출해서 새로운 배열을 만든다
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
const tasksNotDone = todos.filter(todo => todo.done === false);
//const tasksNotDone = todos.filter(todo => !todo.done); 위와 같다
console.log(tasksNotDone);
splice
배열에서 특정 항목을 제거할때 사용한다
(첫번째 파라미터는 몇번째 인덱스부터 지울지를 의미하고 두번째 파라미터는 그인덱스부터 몇개를 지울지를 의미한다.)
const numbers = [10, 20, 30, 40];
const index = numbers.indexOf(30);
numbers.splice(index, 1);
console.log(numbers);
slice
splice와 비슷하나 splice를 배열을 자를때 기존의 배열에서 잘라내는 반면
slice는 기존 배열은 건들이지 않는다.
const numbers = [10, 20, 30, 40];
const sliced = numbers.slice(0, 2); // 0부터 시작해서 2전까지
console.log(sliced); // [10, 20]
console.log(numbers); // [10, 20, 30, 40]
concat
여러개의 배열을 하나의 배열로 합쳐준다
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concated = arr1.concat(arr2);
console.log(concated);
join
배열안의 값들을 문자열 형태로 합쳐준다.
const array = [1, 2, 3, 4, 5];
console.log(array.join()); // 1,2,3,4,5
console.log(array.join(' ')); // 1 2 3 4 5
console.log(array.join(', ')); // 1, 2, 3, 4, 5
reduce
배열에 대한 총 합을 구하는 등 누적 계산에 용이하다 (map, filter, find 등도 모두 reduce로 구현 가능하다)
배열의 값을 한개로 감소시키는 특성을 가지고 있다
arr.reduce((previouseValue, currentValue, currentindex, array) => {}, initialValue}
첫번째 인자 : callback 부분
accumulator: 마지막 콜백에서 반환된 값 또는 초기값(initialValue) ( 콜백의 반환값을 누적)
currentValue : 현재 배열 내 처리되고 있는 요소의 현재 값 (처리할 현재 요소)
currentIndex: 현재 배열내 처리되고있는 요소의 인덱스 (initialvalue를 제공한 경우 0 혹은 1부터시작)
array: reduce 호출에 사용되는 원래 배열
initialValue: callback의 첫번째 인수의 값에 사용되는 값(default)
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current) => accumulator + current, 0);
console.log(sum);
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current) => {
console.log({ accumulator, current });
return accumulator + current;
}, 0);
console.log(sum);
reduce로 평균 계산하기
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current, index, array) => {
if (index === array.length - 1) {
return (accumulator + current) / array.length;
}
return accumulator + current;
}, 0);
console.log(sum);
배열의 중복된 갯수 구하기
const arr = ['pdf', 'html', 'html', 'gif', 'gif', 'gif'];
//반복된 횟수를 객체로 반환하라
const res = arr.reduce((total, current) => {
console.log(`total = ${JSON.stringify(total)}`);
console.log(`current = ${JSON.stringify(current)}`);
// total[current] = (total[current] || 0) + 1;
total[current] = (total[current] || 0) + 1;
console.log(total[current]);
return total;
}, {});
console.log(res);
reduce 활용 설명 블로그 주소 : https://steemit.com/javascript/@rouka/reduce
'JavaScript > javascript 기초 공부하기' 카테고리의 다른 글
Truty and falsy, 단축 평가 논리 계산 (0) | 2020.01.24 |
---|---|
프로토타입과 클래스 (0) | 2020.01.24 |
자바스크립트 반복문 정리 (for of, for in, Object.entries,keys,values) (0) | 2020.01.19 |
javascript로 css 조작하기 (0) | 2020.01.09 |
마우스 이벤트, 키보드 이벤트 (0) | 2020.01.07 |