250x250
Notice
Recent Posts
Recent Comments
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

진스

배열 중복 제거하기, 중복 개수 구하기 본문

JavaScript

배열 중복 제거하기, 중복 개수 구하기

입방정 2022. 6. 19. 23:10
728x90

중복 개수를 구해보자

1. forEach()

const arr = ['a', 'b', 'a', 'b', 'c'];

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

console.log(result) //{a: 2, b: 2, c: 1}

tip. 객체에 접근때 result['a'] // 2 이용

2. reduce()

const arr = ['a', 'b', 'b', 'a', 'c', 'd'];

const result = arr.reduce((accu, curr) => { 
  accu[curr] = (accu[curr] || 0)+1; 
  return accu;
}, {});

console.log(result) // {a: 2, b: 2, c: 1, d: 1}

중복을 제거 해보자

  • set() 
  • filter()
  • indexOf() reduce(), includes() 
  • for() OR forEach(), includes() 
  • Object.fromEntries(), map(), Object.keys() 
const array = ['C', 'A', 'B', 'A', 'C', 'D', 'C', 'C', 'E', 'D'];

let result1 = [...new Set(array)];
//ES6 에 생긴 Set 을 사용하면 배열 안에서 전개연산자(...)를 사용하여 중복이 제거된 배열로
console.log(result1);	// ['C', 'A', 'B', 'D', 'E']

let result11 = Array.from(new Set(array));
console.log(result11);	// ['C', 'A', 'B', 'D', 'E']
//Array.from()을 사용하여 중복이 제거된 Set으로부터 배열로

let result2 = array.filter((v, i) => array.indexOf(v) === i);
console.log(result2);	// ['C', 'A', 'B', 'D', 'E']
//indexOf()는 입력 값이 해당 배열에서 가장 처음 나타나는 index를 알려줌
//그리고, indexOf()는 입력 값이 해당 배열에서 가장 처음 나타나는 index를 알려줍니다.

let result3 = array.reduce((ac, v) => ac.includes(v) ? ac : [...ac, v], []);
console.log(result3);	// ['C', 'A', 'B', 'D', 'E']
//includes() 함수는 배열이 특정값을 포함하고 있는지의 여부를 boolean 값으로 반환

let result4 = [];
for(v of array) {
  if (!result4.includes(v)) result4.push(v);
}
console.log(result4);	// ['C', 'A', 'B', 'D', 'E']

let result41 = [];
array.forEach((v) => {
  if (!result41.includes(v)) result41.push(v);
});
console.log(result41);	// ['C', 'A', 'B', 'D', 'E']

let result42 = [];
for (let i = 0; i < array.length; i++) {
  if (!result42.includes(array[i])) result42.push(array[i]);
}
console.log(result42);	// ['C', 'A', 'B', 'D', 'E']

let result5 = Object.keys(Object.fromEntries(array.map(v => [v, 0])));
//fromEntries()는 배열을 객체로 묶어주는 메소드
//map() 을 사용하여 [['C', null], ['A', null], ['B', null], ['A', null] ...... ] 의 형태로 변환
//Object.fromEntries() 함수를 사용하여 {'C' : null, 'A' : null, 'B' : null, 'A' : null ...... } 로 key값이 중복될 수 없는 Object 형태 전환
// Object.keys() 를 사용하여 key들만을 다시 배열로
console.log(result5);	// ['C', 'A', 'B', 'D', 'E']
728x90
Comments