반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- sequelize
- vuejs
- sort
- Android
- 프로세스 방지
- 동일 프로그램
- Vue
- nodejs
- xlsx
- f035d
- bucket cors
- v-select
- Vuetify
- bucket max-key
- onsen-ui
- c#
- vuetifyjs
- naver storage bucket error
- error
- NUXT
- v-text-field height
- Electron
- 동일 프로세스
- CSS
- MySQL
- onsenui
- electron-nuxt
- naver storage
- JavaScript
- kotlin
Archives
- Today
- Total
앙큼한 개발기록
[javascript] object 배열 비교 본문
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 값 앞에 부정(!)이 붙는 다는 점
반대로 하면 서로다른 배열인지 아닌지 확인
'개발 > javascript' 카테고리의 다른 글
[javascript] 소수점 3자리 마다 점찍기 (금액에 돈 찍기) (0) | 2023.05.15 |
---|---|
Uncaught (in promise) TypeError: Cannot read properties of undefined 오류 (0) | 2022.12.17 |
[Error] Cannot destructure property 'name' of 'undefined' as it is undefined. (0) | 2022.12.17 |
[Error] An object could not be cloned 오류 (0) | 2022.12.15 |
[sequelize] sequelize data 다이어트 방법 (0) | 2022.12.12 |