자바스크립트에서 배열 중복 개수 구하기
중복 개수 구하는 방법
const array = ['A', 'B', 'C', 'A'] const result = {}; array.forEach((x) => { result[x] = (result[x] || 0) + 1; }) // 결과 // { // A: 2, // B: 1, // C: 1 // }
result[x] = (result[x] || 0) + 1 설명
처음 A가 들어오면 result[A] 가 없기 때문에 result[x] = 0 + 1; 여기로 가서 A : 1을 만든다. 순회하다가 중복되는 마지막 A 가 들어오면 이미 result[A]가 존재하기 때문에 result[x] = result[x] + 1 식에 따라 1을 더해 2로 만든다.
if(result[x]) { result[x] = result[x] + 1; } else { result[x] = 0 + 1; }
배열의 각 요소를 순회하며 callback함수의 실행 값을 누적 하여 하나의 결과 값을 반환한다.
문법 : reduce(callbackFn, initialValue) ( initialValue는 optional한 값 )
const result = array.reduce((accumulator, currentValue) => { accumulator[currentValue] = (accumulator[currentValue] || 0) + 1; return accumulator; },{}); // 결과 // { // A: 2, // B: 1, // C: 1 // }