반응형
JSON 오브젝트 값 비교 시
depth가 1depth이면서 key의 순서가 보장이 된다면 단순하게 JSON.stringify 만을 이용하여 비교할 수 있다
var j1 = {a:1};
var j2 = {a:1};
var isEqual = JSON.stringify(j1) === JSON.stringify(j2);
그런데 JSON 오브젝트의 depth가 더 깊어지거나, key의 순서가 보장이 되지 않을 경우엔 비교가 어렵다
그때는 Object.entries 와 JSON.stringify를 사용하면 해결할 수 있다
var json1 = {a:1,b:2,c:{cc:3}};
var json2 = {c:{cc:3},a:1,b:2}
var e1 = Object.entries(json1).sort(); // 정렬
var e2 = Object.entries(json2).sort(); // 정렬
var isEqual = JSON.stringify(e1)===JSON.stringify(e2);
Object.entries를 이용하면 json 형식을 배열로 변환해주는데, 이때 sort를 이용하여 배열을 정렬해준다
그 후 정렬된 배열을 JSON.stringify를 이용하여 문자로 변환하여 그 값을 서로 비교하면 된다
반응형
'개발 > Javascript' 카테고리의 다른 글
[Javascript] JSON 데이터 -> 쿼리스트링으로 변환 (0) | 2021.03.30 |
---|---|
[nodemailer] node로 smtp 메일 발송하기 (다우오피스 메일) (0) | 2021.02.19 |
댓글