Library/Lodash

๐Ÿ“š Lodash ๊ฐ์ฒด ์กฐ์ž‘ ํ•จ์ˆ˜ ๋ชจ์Œ

์ธํŒŒ_ 2021. 11. 26. 13:41

lodash

Lodash - ๊ฐ์ฒด ์กฐ์ž‘ ํ•จ์ˆ˜ ์ •๋ฆฌ

 

_.pick()

  • ๊ฐ์ฒด์˜ ํ•„์š”ํ•œ ์†์„ฑ๋งŒ ๋ฝ‘์„ ๋•Œ ์“ด๋‹ค.
var user = {
    name: 'socratone',
    password: '12345678'
};

// ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด์ฃผ๊ธฐ ์œ„ํ•ด user ๊ฐ์ฒด์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋บ€๋‹ค.
_.pick(user, ['name']);
// { name: 'socratone' }

โ€‹

_.get()

  • ๊ฐ์ฒด์—์„œ ํ‚ค ๊ฒฝ๋กœ๋ฅผ ์ฃผ์–ด์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
var object = { 'a': [{ 
  'b': { 'c': 3 } 
  }] 
};
 
_.get(object, 'a[0].b.c');
// => 3
var object = { a: 1, b: 2, c: 3, e: { f: 5 } };

_.get(object, 'a');
// => 1

_.get(object, 'd');
// undefined

_.get(object, 'd', 4);
// 4

_.get(object, 'e.f');
// 5

โ€‹

_.omit()

  • ๊ฐ์ฒด์—์„œ ํ•ด๋‹น ํ‚ค๋ฅผ ์ƒ๋žต(์ œ์™ธ)ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
var object = { a: 1, b: '2', c: 3 };

_.omit(object, ['a', 'c']); // ํ‚ค a์™€ c๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ˜ํ™˜
// => { 'b': '2' }

_.omit(object, 'a'); // ํ‚ค a๋งŒ ์ œ์™ธ
// => { 'b': '2', 'c': 3 }

โ€‹

_.cloneDeep()

  • ๊นŠ์€ ๊ฐ์ฒด ๋ณต์‚ฌ
  • es6์˜ Object.assign() ๊ฐ™์€๊ฒฝ์šฐ ์–•์€๋ณต์‚ฌ๋กœ, ๋‚ด๋ถ€์˜ ๊ฐ์ฒด ๊ฐ’์€ ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.โ€‹
์–•์€ ๋ณต์‚ฌ Shllow Copy
์–•์€ ๋ณต์‚ฌ๋ž€ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์›๋ž˜๊ฐ’๊ณผ ๋ณต์‚ฌ๋œ ๊ฐ’์ด ๊ฐ™์€ ์ฐธ์กฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
๊ฐ์ฒด์•ˆ์— ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ํ•œ๊ฐœ์˜ ๊ฐ์ฒด๋ผ๋„ ์›๋ณธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ์–•์€ ๋ณต์‚ฌ๋ผ๊ณ  ํ•œ๋‹ค.
์ฆ‰, ์–ด๋А ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ–ˆ๋Š”๋ฐ, ์™„์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณต์‚ฌ๋œ๊ฒŒ ์•„๋‹ˆ๋ผ ์ฐธ์กฐ๋กœ ๋ณต์‚ฌ๋˜์–ด ์›๋ณธ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ๋ณต์‚ฌ๋œ ๊ฐ’๋„ ์˜ํ–ฅ์ด ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

๊นŠ์€ ๋ณต์‚ฌ Deep Copy
๊นŠ์€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๋Š” ๊ฐ์ฒด์•ˆ์— ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋„ ์›๋ณธ๊ณผ์˜ ์ฐธ์กฐ๊ฐ€ ์™„์ „ํžˆ ๋Š์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.
var object = {a: 10, b:{c: 15}};
 
let deep = _.cloneDeep(objects);

โ€‹

_.isEqual()

  • ๊ฐ์ฒด ๋‚ด์šฉ ๋น„๊ต
var object = { 'a': 1 };
var other = { 'a': 1 };

object === other; // => false

_.isEqual(object, other); // => true
const one = {
  fruit: '๐Ÿฅ',
  nutrients: {
    energy: '255kJ',
    minerals: {
      name: 'calcium'
    }
  }
};

const two = {
  fruit: '๐Ÿฅ',
  nutrients: {
    energy: '255kJ',
    minerals: {
      name: 'calcium'
    }
  }
};

// Using JavaScript
JSON.stringify(one) === JSON.stringify(two); // true

// Using Lodash
_.isEqual(one, two); // true

# ์ฐธ๊ณ ์ž๋ฃŒ

https://www.geeksforgeeks.org/lodash-introduction/?ref=gcse

https://lodash.com/docs/4.17.15

https://runebook.dev/ko/docs/lodash/-index-