ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

for each

 

동일한 코드를 반복 실행해야 합니다.


 

What ?

for each 문

배열의 요소들을 반복하는 메서드 입니다. 

 

 arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])

 

How ?

// for each 문 형태

let 초기 배열(initialization)

초기 배열(initialization).forEach((요소(element), 인덱스(index)) => {
  코드블록 내용(body)
});
구성 요소
요소 예시 설명
  초기 배열 ( initialization ) [ a, b, c, d ... ]   반복할 배열입니다. 
 요소 ( element ) a   배열안의 각각의  값을 나타냅니다.
 인덱스 ( index )  0   배열안의 요소들의 순서를 나타냅니다.
  코드블록 내용 ( body ) console.log ( element) 코드 블록 ( { } ) 안에서 실행할 기능입니다. 

 

 


 - 실행 과정 -

forEach() 메서드 실행
→ 
배열의 요소를 처음부터 끝까지 순회합니다.
→ 
순회 중에 배열의 각 요소에 대해 지정된 함수를 호출합니다.
→  배열의 요소와 함께 해당 요소의 인덱스, 그리고 배열 자체를 인수로 전달
→  배열의 다른 요소들에는 어떤 변경도 가해지지 않습니다.
→  모든 요소에 대해 주어진 함수가 호출되면 종료됩니다.

 


객체( { } )에 forEach() 사용
// 객체 forEach 메서드

let arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 5, // length가 3이므로 forEach()에서 무시됩니다.
};

Array.prototype.forEach.call(arrayLike, (x) => console.log(x));
// 2
// 3
// 4

  - arrayLike를 첫 번째 매개변수로 넣고, 두 번째 매개변수로는 콜백 함수를 넣습니다. 배열이 아닌 객체에 대해 배열를 호출합니다.


 

Point !

파괴적인 필터링 ( 요소를 반복하면서 선택된 원소를 제거해야 하는 경우 )  사용할 수 없습니다.
// 요소를 제거할 경우

let array = [1, 2, 3, 4, 5];

array = array.forEach(item => item !== 3);

console.log(array) // [1, 2, 3, 4, 5];

   for each 문은 반복을 중지하거나 중단할 수 있는 방법이 없어 array 배열에는 아무런 변화가 없습니다.

 

배열을 순회하면서 원소 값 일부 혹은 전체를 변경할려면 배열의 인덱스를 사용해야 합니다.
// 요소를 수정하는 경우

let array = [1, 2, 3, 4, 5];

array = array.forEach((element, index) => array[3]=6);

console.log(array) // [1, 2, 3, 6, 5]

 

for each 문은  빈 요소에 대해 호출되지 않습니다.
// 빈 값이 있는 배열

const example = [1, /* 빈 슬롯 */, 3];
let count = 0;

example.forEach((element) => {
  console.log({ element });
  count++;
});

console.log({ count });

// { element: 1 }
// { element: 3 }
// { count : 3 }

  - console 값에 빈슬롯이 나타나지 않고, 횟수도 증가하지 않습니다.

 

forEach 문은 명확하고, 유연하고, 버그를 예방효과 그리고 성능 저하가 없습니다.

 


728x90