진스
배열 중복 제거하기, 중복 개수 구하기 본문
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
'JavaScript' 카테고리의 다른 글
스프레드(Spread 연산자), 나머지(rest 파라미터) (0) | 2022.06.22 |
---|---|
숫자 사이 콤마(,) 넣는 방법 javascript (0) | 2022.06.20 |
얕은복사 , 깊은 복사 (0) | 2022.06.14 |
URL 파라미터 값 가져오기 (?뒤에값을 이용해 =뒤에 값을 출력) (0) | 2022.06.11 |
논리 연산자 || / && / ?? / ?. (or, and, 옵셔널 체이닝,Nullish coalescing) (0) | 2022.06.02 |
Comments