โ ๋ฒ๊ทธ๋ณด๊ณ ๋๋๊ฐ์ด ์คํ๋ณด๊ณ ๋๋๋ค. โ
- ๊ฐ๋ฐ์ ์๋ด(Programmerโs Proverbs)

๊ฐ์ฒด ๋ผ๋ฆฌ ๊ฐ ๋น๊ตํ๊ธฐ
key ์์๊ฐ ์ ํด์ง ๊ฐ์ฒด ๋น๊ต
const one = {
fruit: '๐ฅ',
nutrients: {
energy: '255kJ',
minerals: {
name: 'calcium'
}
}
};
const two = {
fruit: '๐ฅ',
nutrients: {
energy: '255kJ',
minerals: {
name: 'calcium'
}
}
};
// 1. Using JSON
JSON.stringify(one) === JSON.stringify(two); // true
// 2. Using Object.entries
Object.entries(one).toString() === Object.entries(two).toString();
// 3. Using Lodash Library
_.isEqual(one, two); // true
key ์์๊ฐ ์ ํด์ง์ง ์์ ๊ฐ์ฒด ๋น๊ต
๋ง์ผ ์์๊ฐ ์ ํด์ง ๊ฐ์ฒด๊ฐ ์๋, ๊ฐ์ฒด์ key ์์๋ฅผ ๋ณด์ฅํ์ง ์์ ๊ฒฝ์ฐ ์์ ๋น๊ต์์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ค.
let one = {splitter : true, plate : true};
let two = {plate : true, splitter : true};
console.log(JSON.stringify(one) === JSON.stringify(two));
// false
console.log(Object.entries(one).toString() === Object.entries(two).toString());
// false
๋ํ์ ์ผ๋ก ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ๋ค์ ๊ฐ์ฒดํ ํ ๋ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ด๋ค. ์๋ฅผ๋ค์ด ์๋ฒ๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ค๋๋ฐ ๊ทธ๋๋ง๋ค {splitter : true, plate : true} ๋ก ๋ค์ด์ฌ ๋ ๋ ์๊ณ , {plate : true, splitter : true } ๋ก ๋ค์ด์ค๊ธฐ๋ ํด์ ์ ๋๋ก ๋ ๋น๊ต๋ฅผ ํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
/* 1. ๋จผ์ ๊ฐ์ฒด์ key๊ฐ์ sort()๋ฅผ ํตํด ์ ๋ ฌํด์ฃผ๊ณ
2. ์ ๋ ฌ๋ key๋ฅผ reduce๋ก ์ํํ๋ฉด์ key value๋ฅผ ์ฒซ {} ์์ ์์๋๋ก ์
๋ ฅํด์ค๋ค */
let one_sort = Object.keys(one).sort().reduce((obj, key) => (obj[key] = one[key], obj), {});
let two_sort = Object.keys(two).sort().reduce((obj, key) => (obj[key] = two[key], obj), {});
console.log(one_sort); // { "plate":true, "splitter": true }
console.log(two_sort); // { "plate":true, "splitter": true }
console.log(JSON.stringify(one_sort) === JSON.stringify(two_sort));
// true
console.log(Object.entries(one_sort).toString() === Object.entries(two_sort).toString());
// true
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.