이전 게시글에서 먼저 Lodash에 대해 간략히 포스팅했다.
🎈 이번에는 내가 쓴 직접 써본 method인 _.cloneDeep 에 대해 설명할 예정이다.
old_data라는 배열과 new_data라는 배열이 있다고 가정해보자.
나는 엑셀 다운로드( old_data) 후 컬럼에 대해서 수정을 하고 수정된 엑셀 파일(new_data)을 첨부하는 과정을 구현하였다.
쉽게 말해 old_data 배열과 new_data 배열을 비교하는 로직이다.
하지만 파일 첨부하는 과정에서 웹 페이지를 새로고침 하지 않고 모달 창만 close 하고 open 하면서 파일 첨부를 하면 old_data가 new_data로 바뀌는 버그가 일어났다.
해결 방법은 의외로 허무했다. 😥
기존에 dataTable을 통해서 old_data 배열을 가져왔는데 객체를 복하사여 가져오니, old_data는 더이상 new_data로 바뀌지 않았다.
//old_data와 new_data를 비교하는 함수
function compareData() {
fn_dataTable();
let old_data = deepCopy;
let new_data = EXCEL_JSON // 엑셀에서 갖고 온 데이터
.
.
.
}
//깊은 복사로 dataTable데이터 가져오기
function fn_dataTable() {
let tblEle = $('#id');
deepCopy = _.cloneDeep(tblEle.DataTable().data());
return tblEle.DataTable().data();
}