Skip to content

Commit 0ab4958

Browse files
committed
fix: 중첩된 객체 및 배열도 정렬되도록 수정
1 parent d9d8948 commit 0ab4958

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1-
export function stableStringify(obj: Record<string, unknown>) {
2-
return JSON.stringify(obj, Object.keys(obj).sort());
1+
export function stableStringify(obj: Record<string, unknown>): string {
2+
return JSON.stringify(sortObjectKeys(obj));
3+
}
4+
5+
function sortObjectKeys(value: unknown): unknown {
6+
if (value === null || value === undefined) {
7+
return value;
8+
}
9+
10+
if (Array.isArray(value)) {
11+
return value.map(sortObjectKeys);
12+
}
13+
14+
if (typeof value === "object") {
15+
const sortedObj: Record<string, unknown> = {};
16+
const keys = Object.keys(value).sort();
17+
18+
for (const key of keys) {
19+
sortedObj[key] = sortObjectKeys(value[key]);
20+
}
21+
22+
return sortedObj;
23+
}
24+
25+
return value;
326
}

0 commit comments

Comments
 (0)