Javascript

[JAVASCRIPT] 객체 비교 (재귀함수)

임호랑이 2021. 7. 1. 17:31

객체 끼리 값을 비교 해서 다른 값만 끄집어내야하는 일이 생겼다..

예제 코드..

testA 와 testB를 testB기준에서 비교하려고한다.

(testA = 변경값 , testB = 원본값)

객체의 객체.. 즉 뎁스 상관없이 다른? 값을 끄집어내야한다.

그래서 만든 재귀 함수를 이용한 비교 코드이다..

비교할 값 두개를 받아와서 

값이 객체가 아닐시는 객체간의 값을 비교해서 다를시 새로운 객체 변수에 담는다

만약 그 객체안의 값이 객체 일시 재귀호출 을 통해 다시한번 돌리고

리턴받은 depsObj 의 값의 key 개수가 0이 아닐때만 값을 넣는다

재귀함수를 통해서 뎁스 상관없이 객체일때는 계속 비교가 가능하다..

 

주의 ) javascript typeof 는 배열 또는 null 일때도 object 를 리턴한다..

null을 리턴하는건 자바스크립트의 초기 버그중 하나라는데.. 주의해서 사용하도록하자..

잘나온당 ㅎㅎ V

 

회사에서 여러 인풋으로 구성된 ui 에서 수정된 객체만 업데이트 api 에 넘겨주기위해서 만들게되었다

위의 예제는 단순히 다른 객체비교지만 앞서말한것과 같은 케이스에선

기존 list data 를 똑같은 다른 객체에다 복제(깊은복사) 해주고 저 로직을 돌리는식으로 진행하였다.

 

마무리로 깊은 복사 펑션..