_.omit๊ณผ ์ ์ฌํ ํจ๊ณผ
lodash์์ _.omit๊ณผ _.pick์ ๊ฐ์ฒด์์ ํน์ ์์ฑ์ ํํฐ๋งํ ๋ ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ ํจ์๋ก, ๋น์ทํ ๋ชฉ์ ์ ๊ฐ์ง์ง๋ง ๋์ ๋ฐฉ์์ด ๋ฐ๋์
๋๋ค. ์๋์ ์ฐจ์ด์ ์ ๊ฐ๋จํ ์ค๋ช
ํฉ๋๋ค. ES6+์์ ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง(...rest)์ ์ฌ์ฉํด _.omit๊ณผ ์ ์ฌํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์๋๋ ...rest๋ฅผ ์ฌ์ฉํ ์์ ์
๋๋ค.
const object = { a: 1, b: 2, c: 3 }; // a์ c๋ฅผ ์ ์ธํ ๋๋จธ์ง ์์ฑ์ ์ถ์ถ const { a, c, ...rest } = object; console.log(rest); // { b: 2 }
- ...rest: ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง์์ ๋ช ์์ ์ผ๋ก ์ ํํ ์์ฑ(a, c)์ ์ ์ธํ ๋๋จธ์ง ์์ฑ์ rest ๊ฐ์ฒด์ ์์งํฉ๋๋ค.
- ๋์: _.omit(object, ['a', 'c'])์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ.
- ์ฅ์ : Lodash ์์ด ๋ค์ดํฐ๋ธ JavaScript๋ก ๊ฐ๋จํ ๊ตฌํ ๊ฐ๋ฅ.
- ์ ํ: ์ ์ธํ ์์ฑ์ ๋ช ์์ ์ผ๋ก ๋ณ์๋ก ์ ์ธํด์ผ ํ๋ฏ๋ก, ๋์ ์ผ๋ก ์์ฑ ๋ชฉ๋ก์ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ถ๊ฐ ๋ก์ง์ด ํ์ํ ์ ์์ต๋๋ค.
๐ ๋์ ์์ฑ ์ ์ธ ์์
const object = { a: 1, b: 2, c: 3 }; const keysToOmit = ['a', 'c']; const result = Object.fromEntries( Object.entries(object).filter(([key]) => !keysToOmit.includes(key)) ); console.log(result); // { b: 2 }
๐ Object.entries(object)
- Object.entries๋ ๊ฐ์ฒด์ ํค-๊ฐ ์์ ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค.
- ์ ๋ ฅ ๊ฐ์ฒด: object = { a: 1, b: 2, c: 3 }
- ์ถ๋ ฅ: [['a', 1], ['b', 2], ['c', 3]]
- ๊ฐ ์์๋ [key, value] ํํ์ ๋ฐฐ์ด์ ๋๋ค.
๐ .filter(([key]) => !keysToOmit.includes(key))
- filter ๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฑธ๋ฌ๋ ๋๋ค.
- [key]๋ ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง์ ์ฌ์ฉํด ๊ฐ ํค-๊ฐ ์์์ key๋ง ์ถ์ถํฉ๋๋ค. (๊ฐ์ ๋ฌด์๋จ)
- keysToOmit์ ์ ์ธํ๋ ค๋ ํค๊ฐ ๋ด๊ธด ๋ฐฐ์ด, ์: ['a', 'c'].
- !keysToOmit.includes(key)๋ key๊ฐ keysToOmit ๋ฐฐ์ด์ ์์ผ๋ฉด true๋ฅผ ๋ฐํ.
- ์: key = 'a' โ keysToOmit.includes('a')๋ true์ด๋ฏ๋ก !true๋ false โ ์ ์ธ. key = 'b' โ keysToOmit.includes('b')๋ false์ด๋ฏ๋ก !false๋ true โ ์ ์ง.
- ํํฐ๋ง ๊ฒฐ๊ณผ: [['b', 2]] (a์ c๋ ์ ์ธ๋จ).
๐ Object.fromEntries(...)
- Object.fromEntries๋ ํค-๊ฐ ์ ๋ฐฐ์ด์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค.
- ์ ๋ ฅ: [['b', 2]]
- ์ถ๋ ฅ: { b: 2 }
๐ ๊ฒฐ๊ณผ
- Object.entries๋ก ๊ฐ์ฒด๋ฅผ ํค-๊ฐ ๋ฐฐ์ด๋ก ๋ณํ.
- filter๋ก ์ ์ธํ ํค(keysToOmit)๋ฅผ ์ ์ธํ ํญ๋ชฉ๋ง ์ ์ง.
- Object.fromEntries๋ก ํํฐ๋ง๋ ๋ฐฐ์ด์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํ.
- ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ง์ ๋ ํค๋ฅผ ์ ์ธํ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑ.
- ์ ๋ ฅ: object = { a: 1, b: 2, c: 3 }, keysToOmit = ['a', 'c']
- ์ถ๋ ฅ: result = { b: 2 }
- ์ด๋ _.omit(object, ['a', 'c'])์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ.
_.pick๊ณผ ์ ์ฌํ ํจ๊ณผ
_.pick์ ๋์ฒดํ๋ ค๋ฉด, ํน์ ์์ฑ๋ง ์ ํํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ์
const object = { a: 1, b: 2, c: 3 }; const keysToPick = ['a', 'c']; const result = Object.fromEntries( Object.entries(object).filter(([key]) => keysToPick.includes(key)) ); console.log(result); // { a: 1, c: 3 }
- - ...rest๋ _.omit๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ๋ค์ดํฐ๋ธ๋ก ์ ๊ณตํ์ง๋ง, ๋์ ์์ฑ ์ฒ๋ฆฌ๋ ์ถ๊ฐ ์ฝ๋ ํ์.
- - Object.entries์ Object.fromEntries๋ฅผ ์ฌ์ฉํ๋ฉด _.omit๊ณผ _.pick ๋ชจ๋ ์ ์ฐํ๊ฒ ๋์ฒด ๊ฐ๋ฅ.