[JS] 배열에서 중복 값 개수 구하기 - forEach()

SHONG·2024년 6월 4일

JavaScript

목록 보기
3/8
post-thumbnail

배열에 있는 값이 몇 번 중복되는지 찾을 때 여러 방법 중 forEach() 함수를 이용하는 법에 대해 정리해보기로 했다.


const arr = [1, 2, 3, 1, 2, 3]

위와 같이 중복된 값을 가지는 배열이 있을 때 각 값이 몇 번 중복되는지 확인하고자 한다.

const arr = [1, 2, 3, 1, 2, 3]

const result = {};
arr.forEach((k) => (result[k] = (result[k] || 0) + 1));

console.log(result);
/*
결과 : {1: 2, 2: 2, 3: 2}
*/

각 값은 2 번씩 중복되는 것을 확인할 수 있다.


result[k] = (result[k] || 0) + 1)
이 코드를 풀어 쓰면 아래와 같다.

if(result[k]) { // 들어오는 값이 result에 속성으로 존재하는 경우
	result[k] = result[k] + 1;
} else { // 존재하지 않는 경우
	result[k] = 0 + 1;
}
  • forEach의 첫 번째 반복에서 첫 번째 값 1이 들어오게 된다.
    빈 객체인 result에선 1인 속성이 undefined이므로 0+1을 값으로 추가한다.
  • 두 번째 값과 세 번째 값 역시 마찬가지로 각각 1을 값으로 추가한다.
    여기까지는 {1: 1, 2: 1, 3: 1}이 저장되었다.
  • 네 번째 값 1이 들어오면 이미 result에 속성 1이 존재하므로 1+1, 즉 2로 세팅한다.
  • 나머지도 마찬가지로 중복된 값이 있는 경우 value에 1을 계속 더해준다.
profile
핑계 대지 말자

0개의 댓글