일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- createSlice
- axios
- sw expert academy
- react-redux
- JavaScript
- 매일메일
- react
- 프로그래머스
- 알고리즘
- redux-toolkit
- SW
- C++
- maeil-mail
- java
- 이코테
- json-server
- redux-saga
- 리액트
- 코딩테스트합격자되기
- 자바
- 테코테코
- redux
- programmers
- Get
- useDispatch
- 항해플러스
- react-router
- 항해99
- Python
- Algorithm
- Today
- Total
Binary Journey
[Javascript] Array 중복 제거 - Set 사용 본문
Javascript 쓰다 보면 [] (Array)를 쓸 일이 굉장히 많다.
그리고 array 값 중 중복된 값들을 제거하고 싶을 때가 온다.
일단 array 내 element 가 object 가 아님을 전제로 하였을 때
new Set() 를 사용한다.
set 객체는 자료형에 상관없이 유일한 값만 저장시킨다고 모질라에 나와있지만 확인 결과, object 형식은 안되는 것 같다.
var arr = [];
for (var i = 0; i < 5; i++) {
arr.push("a");
}
var newArr = [...new Set(arr)];
console.log("===== String =====");
console.log(newArr);
console.log("===== String =====");
var arr = [];
for (var i = 0; i < 5; i++) {
arr.push({ name: "a", value: 1 });
}
var newArr = [...new Set(arr)];
console.log("===== Object =====");
console.log(newArr);
console.log("===== Object =====");
그래서 다시 구글링을 해봤다
stackoverflow.com/questions/2218999/how-to-remove-all-duplicates-from-an-array-of-objects
How to remove all duplicates from an array of objects?
I have an object that contains an array of objects. things = new Object(); things.thing = new Array(); things.thing.push({place:"here",name:"stuff"}); things.thing.push({place:"there",name:"more...
stackoverflow.com
var arr = [];
for (var i = 0; i < 5; i++) {
arr.push({ name: "a", value: 1 });
}
var newArr = arr.filter((item, index, array) => array.findIndex(compared => (compared.name === item.name && compared.value === item.value)) === index);
console.log("===== filtered =====");
console.log(newArr);
console.log("===== filtered =====");
같은 값을 가지고 있는 것 중에 index가 가장 빠른 것들의 값만 추리는 것 같다.
다른 방법이 없는지 다음에 더 찾아보겠다.
------ 2021-04-22
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Array.prototype.reduce() - JavaScript | MDN
Array.prototype.reduce() reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. 리듀서 함수는 네 개의 인자를 가집니다. 누산기accumulator (acc)
developer.mozilla.org
모질라에 reducer를 이용하여 배열의 중복항목 제거 방법이 나와있길래 시도해보려 한다.
사실 이 포스팅 수정하다가 알게 됨!
[Javascript] Array.from(), Array.prototype.reduce() (feat. 프로그래머스 다리를 지나는 트럭)
프로그래머스에서 <다리를 지나는 트럭> 풀다 막힌 문제인데 내 첫 식은 이랬다. function solution(bridge_length, weight, truck_weights) { let seconds = 0; let onBridge = [ ...truck_weights ]; do { let s..
binaryjourney.tistory.com
예제는 이렇다
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let result = arr.sort().reduce((accumulator, current) => {
const length = accumulator.length
if (length === 0 || accumulator[length - 1] !== current) {
accumulator.push(current);
}
return accumulator;
}, []);
console.log(result); //[1,2,3,4,5]
위의 방법을 응용하여 해보았다.
var arr = [];
for (var i = 0; i < 5; i++) {
arr.push("a");
}
var result = arr.reduce((rv, current) => {
var length = rv.length;
if (length === 0 || rv[length - 1]["name"] !== current["name"]) {
rv.push(current);
}
return rv;
}, []);
된다!
(단 이 방법은 안에 객체가 모두 같은 데이터를 갖고 있기에 가능했던 것이고
만약 value가 다 다른 객체였다면 일단 sort를 먼저 한 다음에 해야 빼먹은 요소 없이 중복제거가 가능하다.)
'Javascript' 카테고리의 다른 글
[Javascript] string 공백 지우기, Removing whitespace (0) | 2021.09.01 |
---|---|
[Javascript] Array.from(), Array.prototype.reduce() (feat. 프로그래머스 다리를 지나는 트럭) (0) | 2021.04.21 |
[Javascript] Optional Chaining ( ?.) (0) | 2021.04.07 |
[Javascript] Array.prototype.some(), Array.prototype.every() (0) | 2021.03.31 |
[Javascript] if, if~else if~else, for, while, forEach (0) | 2021.03.31 |