앙큼한 개발기록

[javascript] object 배열 비교 본문

개발/javascript

[javascript] object 배열 비교

angkeum 2023. 5. 12. 22:36

javascript에서는 두 객체 배열을 합치고, 비교하고 중복 체크하는 경우가 많은데 

이번 기회에 정리를 한번 해 보고자 한다. 

 

조건 객체 

let arr1 = [
	{ uid: 1, name: "사과" },
	{ uid: 2, name: "배" },
	{ uid: 3, name: "귤" },
	{ uid: 4, name: "감" }
]

let arr2 = [
	{ uid: 2, name: "배" },
	{ uid: 3, name: "귤" },
	{ uid: 5, name: "포도" }
]

라는 객체가 있다고 했을 때 

 

1. 두 객체 배열에서 중복 제거 (arr1에서 arr2와 중복되는 애들 제거)

let list = arr1.filter(e => {
	return !arr2.some(el => el.uid === e.uid)
})

* some을 반대로 하면 중복되는 애들만 추출 된다.

 

1.1 중복 제거 합치기 

- filter, concat 사용

let collapse = arr1.filter(e => {
    return !arr2.some(el => el.uid === e.uid)
}).concat(arr2)

 

- reduce, some 사용

let reduceList = arr2.reduce((prev, curr) => {
    if (!prev.some(e => e.uid === curr.uid)) {
        prev.push(curr)
    }
    return prev
}, arr1)

* index에 맞게 혹은 key에 맞게 넣고 싶다면 splice 를 사용

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

 

Array.prototype.splice() - JavaScript | MDN

splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

developer.mozilla.org

 

 

 

2. 비교 해서 배열이 같은지 확인  

- 배열이 같은지 확인하는 방법은 전체가 같은지 확인하는 방법(완전일치)와 

키 값이 같은 애들 확인하는 방법이 있다 

 

- 완전일치 확인 (json)

let isSame = JSON.stringify(arr1).include(JSON.stringify(arr1))

 

- key 확인

let isSame = arr1.some(e => {
	return !arr2.findIndex(el => el.uid === e.uid) < 0
})

key point는 some 의 return 값 앞에 부정(!)이 붙는 다는 점

반대로 하면 서로다른 배열인지 아닌지 확인 

 

 

 

Comments