·2분 읽기
JSON 배열 중복 제거 방법 — JavaScript Python 실전 코드
JSON 배열의 중복 객체를 제거하는 JavaScript, Python 실전 코드 모음이에요. 단순 값부터 객체 배열, 키 기반 중복 제거까지 정리했어요.

{ }
JSON 포맷터 바로 사용하기
JSON을 예쁘게 정렬하고 검증하세요
→
JSON 배열에 중복이 쌓이는 이유
API 응답을 페이징으로 모을 때, 여러 배치의 결과를 합칠 때, 사용자 입력을 그대로 저장할 때 중복이 생기기 쉬워요. 단순 문자열 배열이라면 Set으로 끝나는데, 객체 배열은 참조 동등성 때문에 바로 Set에 못 넣어요.
이 글에서는 실전에서 자주 만나는 4가지 중복 제거 케이스를 JavaScript와 Python 코드로 정리했어요.
방법 1 — 단순 값 배열 (숫자·문자열)
JavaScript:
const arr = [1, 2, 2, 3, 'a', 'a', 'b'];
const unique = [...new Set(arr)];
// [1, 2, 3, 'a', 'b']
Python:
arr = [1, 2, 2, 3, 'a', 'a', 'b']
unique = list(set(arr))
# 순서 보존 버전
unique = list(dict.fromkeys(arr))
Set은 순서를 보장하지 않지만, JS의 Set과 Python의 dict.fromkeys는 입력 순서를 유지해요. 순서가 중요하면 두 번째 방식을 쓰세요.
방법 2 — 객체 배열, 완전히 동일한 객체 제거
모든 필드가 같을 때만 중복으로 처리하는 경우예요.
JavaScript:
const arr = [{id:1,name:'A'}, {id:1,name:'A'}, {id:2,name:'B'}];
const unique = Array.from(
new Map(arr.map(o => [JSON.stringify(o), o])).values()
);
Python:
import json
seen = set()
unique = []
for item in arr:
key = json.dumps(item, sort_keys=True)
if key not in seen:
seen.add(key)
unique.append(item)
JSON 직렬화로 키를 만드는 방식이에요. 중첩 객체도 처리되지만 필드 순서가 달라지면 다른 객체로 인식하니 주의하세요.
방법 3 — 특정 키 기준 중복 제거
id만 같으면 중복으로 처리하는 케이스가 실무에서 가장 흔해요.
JavaScript:
const unique = Array.from(
new Map(arr.map(o => [o.id, o])).values()
);
Python:
seen = set()
unique = []
for item in arr:
if item['id'] not in seen:
seen.add(item['id'])
unique.append(item)
동일 id가 있을 때 '첫 번째 것을 유지'와 '마지막 것을 유지'는 동작이 달라요. 위 코드는 첫 번째를 유지합니다.
방법 4 — 복합 키 중복 제거
email + company 같은 조합으로 중복을 판단하는 경우예요.
JavaScript:
const key = o => `${o.email}|${o.company}`;
const unique = Array.from(new Map(arr.map(o => [key(o), o])).values());
Python:
key = lambda o: (o['email'], o['company'])
seen = set()
unique = []
for item in arr:
k = key(item)
if k not in seen:
seen.add(k)
unique.append(item)
Tuple 키는 Python dict에서 직접 쓸 수 있어요. JS는 문자열 결합이 가장 안전합니다.
Toolkio JSON Formatter로 시각 확인
중복 제거 결과를 JSON Formatter에 붙여 넣으면 계층별로 펼쳐서 검증할 수 있어요. 특히 중첩 객체 배열은 눈으로 diff 확인이 편합니다.
브라우저에서 바로 돌아가므로 민감한 데이터도 서버로 전송되지 않아 안전해요.