-
[JS] 서로 다른 객체배열 내 중복객체 찾기JavaScript 2022. 3. 29. 16:37반응형SMALL
서로다른 객체배열이 있을때 두객체 배열에 공통적으로 들어있는 객체요소를 찾아내보자
- 아래와 같이 배열내에 day는 동일하지만 week가 중복된 경우 data를 먼저 가공한다
- week에 콤마가 들어있는지 유무에 따라 filter를 사용하여 가공한다
let data = [ { "day": "mon", "week": "오전", }, { "day": "mon", "week": "오전,오후", }, { "day": "tue", "week": "오후", }, { "day": "tue", "week": "오전,오후", }, { "day": "wed", "week": null, }, { "day": "sun", "week": "오후", }, ]let double = data.filter(obj => { return obj.week.includes(',') }) // 오전,오후 let single = data.filter(obj => { return !obj.week.includes(',') || obj.week != 'null'}) // 오전 or 오후 // date 가공 결과 let double = [ { "day": "mon", "week": "오전,오후", }, { "day": "tue", "week": "오전,오후", }, ] let single = [ { "day": "mon", "week": "오전", }, { "day": "tue", "week": "오후", }, { "day": "wed", "week": null, }, { "day": "sun", "week": "오후", }, ] let doubleString = JSON.stringfy(double) // double배열을 문자열로 바꾼다. let tempStr = single.filter(obj => { return !doubleString.include(obj.day) }) // single배열중에서 day가 double배열에 중복되지 않는 단일값만 temp배열에 담기 let tempResult = double.push(tempStr) // 오전,오후 double배열에 day가 겹치지 않는 단일배열을 합치기 data = tempResult1. data 가공하여 배열 분리
2. JSON.stringfy () 를 이용하여 double배열을 문자열로 바꾼다.
3. single배열의 요소들을 filter로 하나씩 접근한다.
4. 문자열로 변경한 double배열에 single배열의 day요소가 중복되어 있지 않다면 includes() 를 return한다.
5. 그러면 tempStr 에 [ { "day" : "sun", "week" : "오후" } ] 가 담긴다.
6. double배열에 tempStr배열을 병합한다
7. 원본 data 배열을 병합한 tempResult로 치환한다.
결과
let data = [ { "day": "mon", "week": "오전,오후", }, { "day": "tue", "week": "오전,오후", }, { "day": "wed", "week": null, }, { "day": "sun", "week": "오후", }, ]반응형LIST'JavaScript' 카테고리의 다른 글
[JS] window.location (0) 2022.03.30 [JS] Cross Domain (0) 2022.03.30 [JS] Spread Operator 스프레드 연산자 (0) 2022.03.28 [JS] map, filter, reduce 정리 (0) 2022.03.04 [JS] hasOwnProperty (0) 2022.03.02