forEach - 배열 원소들을 반복하면서 액션(함수)을 취한다. 가장 단순하다.
의미 : 단순 반복 값을 리턴하지 않기 때문에 그냥 정말 단순 반복에 쓰는데 내부에서 배열을 만드는 것도 가능은 하다.
단 배열 만들 때는 보통은 map을 사용한다.
const arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
arr.forEach((value, key) => {
console.log(`${value} : ${key}`)
});
map - 배열 원소들을 반복하면서 값을 변경(함수로)해서 리턴한다. 즉 새로운 배열이 탄생한다.
의미 : 반복하면서 결과를 배열로 반환한다. 보통 배열 전체의 값을 변경할 때 사용한다.
let arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
let newArr = arr.map((value,key)=> value+key);
console.log(arr);
console.log(newArr);
filter - 배열 원소들을 반복하면서 조건(함수)에 true면 원소를 남기고 false면 없애버린다. 이것도 새로운 배열이 탄생한다.
의미 : 배열 값들 중에 의미 없는 값들을 버릴 때 사용한다. 그냥 필터 건다고 생각면 편하다.
let arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
let newArr = arr.filter((value) => value % 3 === 0);
console.log(arr);
console.log(newArr);
reduce - 배열 원소들을 반복하면서 값들을 조합(함수로)해서 특정 값을 만든다. 배열이 아니라 특정 값으로 반환된다.(물론 배열로 만들수도 있다.)
의미 : 보통 배열값들을 이용해서 하나의 결과를 낼 때 사용한다. 모두 더한다던지 아니면 평균을 낸다던지.
let arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
let result = arr.reduce((acc, value, key) => {
let val = acc + value;
if (key === arr.length - 1) {
val = val / arr.length;
}
return val; //다음 반복의 acc의 값으로 들어간다.
}, 0);
console.log(result);
some - 배열 원소들을 반복하면서 특정 원소가 조건(함수)에서 true가 나온다면 즉시 반복을 종료하고 true를 반환한다. 아니면 false를 반환한다.
의미 : 보통 배열에서 특정 값이 있는지 확인하려고 사용한다. 아니면 반복을 특정 상황에서 멈추는 for문을 만드려고 할 때 사용한다.
굉장히 유용한데 그 이유는 다른 반복들과는 다르게 break가 가능하기 때문이다.
let arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
let choose12 = arr.some((value) => {
if (value === 12) {
return true;
}
});
console.log(choose12);
every - 배열 원소들을 반복하면서 모든 원소가 조건(함수)에서 true가 나온다면 true를 반환하고 하나라도 false가 나오면 반복을 멈추고 false를 반환한다.
의미 : 배열이 모든 조건을 만족하는지 확인하려고 사용한다. every역시 some처럼 break가 가능은 한데 보통 그런 목적이면 some으로도 가능하다.
let arr = [2, 4, 6, 8, 10, 12, 14, 22, 99, 100];
let isEven = arr.every((value) => {
console.log(value);
if (value % 2 === 0) {
return true;
}
});
console.log(isEven);