μ„±λŠ₯ 비ꡐ πŸ“ˆ β–» Lodash vs ES6

December 10, 2019

logo

πŸ’Ž λͺ©μ°¨

πŸš€ μ‹œμž‘ν•˜λ©°

μ•ˆλ…•ν•˜μ„Έμš” πŸ•¦ μ˜€λŠ˜μ€ λŠ¦μ€ μ‹œκ°„μ— ν¬μŠ€νŒ…μ„ ν•˜κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

퇴근 ν›„, μ†Œμ†Œν•œ λΈ”λ‘œκ·Έλ„ 또 ν•˜λ‚˜μ˜ 재미라고 μƒκ°ν•˜λ„€μš”. 😎

자 그럼 ~ 이번 ν¬μŠ€νŒ… μ£Όμ œλŠ” Lodash vs ES6 μ„±λŠ₯을 λΉ„κ΅ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


⬆ λͺ©μ°¨


😳 μ½”λ“œλ₯Ό 보며

β–Έ find()

find()λŠ” 쑰건을 λ§Œμ‘±ν•˜λŠ” μ»¬λ ‰μ…˜μ—μ„œμ˜ 첫번째 μš”μ†Œλ₯Ό μ°ΎλŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
_.find(array, arr => arr.age < 28)

/* ES6 */
array.find(arr => arr.age < 28)

1 2

μžμ„Ένžˆ 보기


β–Έ filter()

filter()λŠ” νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” λͺ¨λ“  μš”μ†Œλ₯Ό μΆ”μΆœν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
_.filter(array, arr => arr.age > 26)

/* ES6 */
array.filter(arr => arr.age > 26)

3 4

μžμ„Ένžˆ 보기


β–Έ forEach()

forEach()λŠ” λ°°μ—΄ 전체λ₯Ό 돌며 ν•΄λ‹Ή λ°°μ—΄μ˜ μš”μ†Œμ— 직접적인 μž‘μ—…μ„ ν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
_.forEach(array, (arr, index, self) => {
  // ...
})

_.each(array, (arr, index, self) => {
  // ...
})

/* ES6 */
array.forEach((arr, index, self) => {
  // ...
})

5 6

μžμ„Ένžˆ 보기


β–Έ map()

map()은 λ°°μ—΄ 전체λ₯Ό 돌며 λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 가지고 μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œμž…λ‚˜λ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
var result = _.map(array, arr => {
  // ...
})

/* ES6 */
var result = array.map(arr => {
  // ...
})

7 8

μžμ„Ένžˆ 보기


β–Έ reduce()

reduce()은 λ°°μ—΄ 전체λ₯Ό 돌며 λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 가지고

이전 리턴 값을 λ„˜κ²¨λ°›μ•„ μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν• λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œμž…λ‚˜λ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
var result = _.reduce(array, (prev, cur) => {
    // ...
}, 0)

/* ES6 */
var result = array.reduce((prev, cur) => {
  // ...
}, 0)

9 10

μžμ„Ένžˆ 보기


β–Έ some()

some()은 λ°°μ—΄ 전체λ₯Ό 돌며 λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 가지고

νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” μš”μ†Œκ°€ μžˆλŠ”μ§€ μ•Œκ³ μ‹Άμ„ λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
var result = _.some(array, arr => {
  // ...
})

/* ES6 */
var result = array.some(arr => {
  // ...
})

11 12

μžμ„Ένžˆ 보기


β–Έ every()

every()은 λ°°μ—΄ 전체λ₯Ό 돌며 λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 가지고

λͺ¨λ“  μš”μ†Œκ°€ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ”μ§€ μ•Œκ³ μ‹Άμ„ λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = [
  { name: 'lim', age: 26 },
  { name: 'kim', age: 28 },
  { name: 'choi', age: 32 },
  { name: 'park', age: 21 },
]

/* Lodash */
var result = _.every(array, arr => {
  // ...
})

/* ES6 */
var result = array.every(arr => {
  // ...
})

13 14

μžμ„Ένžˆ 보기


β–Έ indexOf()

indexOf()은 인자둜 μ „λ‹¬λœ 데이터와 λ§€μΉ˜λ˜λŠ”

첫 번째 μ›μ†Œμ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

/* Lodash */
var result = _.indexOf(array, 'd') > -1

/* ES6 */
var result = array.indexOf('d') > -1

15 16

μžμ„Ένžˆ 보기


β–Έ includes()

includes()은 인자둜 μ „λ‹¬λœ 데이터가 λ°°μ—΄ μš”μ†Œμ—

ν¬ν•¨λ˜μ–΄μžˆλŠ” ν™•μΈν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€.

var array = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

/* Lodash */
var result = _.includes(array, 'd')

/* ES6 */
var result = array.includes('d')

17 18

μžμ„Ένžˆ 보기


⬆ λͺ©μ°¨


⛳️ 마치며

μ§€κΈˆκΉŒμ§€ λ‹€μ–‘ν•œ Array Method μ„±λŠ₯을 비ꡐ해보고 개인적인 견해λ₯Ό λ§μ”€λ“œλ¦½λ‹ˆλ‹€.

β–Έ Lodash

  • μž₯점

    1. λ©”μ†Œλ“œμ—μ„œ μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯으둜 생산성이 λ†’λ‹€.
    2. λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ μ§€μ›ν•˜λ―€λ‘œ μ²˜λ¦¬κ°€ μš©μ΄λ‘­λ‹€.
  • 단점

    1. μ™ΈλΆ€ 라이브러리λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 무겁닀.
    2. ES6에 λΉ„ν•˜μ—¬ 속도가 λŠλ¦¬λ‹€.
    3. 버전관리가 λΆˆνŽΈν•˜λ‹€.

β–Έ ES6

  • μž₯점

    1. λΈŒλΌμš°μ € ν˜Έν™˜μ„±μ΄ λ›°μ–΄λ‚˜λ©° (ES6λŠ” λŒ€λΆ€λΆ„ 지원)
    2. 속도가 λΉ λ₯΄λ‹€.
    3. μ½”λ“œ μœ μ§€ 및 λ³΄μˆ˜κ°€ νŽΈν•˜λ‹€.
  • 단점

    1. μ˜ˆμ™Έ 처리λ₯Ό 잘 ν•΄μ•Όν•œλ‹€. μ™œλƒν•˜λ©΄ Array νƒ€μž…λ°–μ— 지원을 μ•ˆν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
    2. λ³΅μž‘ν•œ 데이터 μ²˜λ¦¬μ—λŠ” 직접 λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•˜λ―€λ‘œ λ²ˆκ±°λ‘­λ‹€.

  • ν”„λ‘ νŠΈ, 초기 λ‘œλ”© 속도, λ¦¬μ†ŒμŠ€ 양을 쀄여야 ν•˜κ³  데이터 μ²˜λ¦¬λŠ” λŒ€λΆ€λΆ„ λ°±μ—”λ“œμ—μ„œ μ€‘μ μ μœΌλ‘œ ν•˜λ‹ˆ ES6 문법
  • λ°±μ—”λ“œ, μ˜ˆμ™Έ 처리의 λŒ€ν•œ 였λ₯˜κ°€ λ°œμƒμ΄ μœ„ν—˜ν•˜λ©°, λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ κ°€κ³΅ν•΄μ•Όν•˜λ‹ˆ 라이브러리

ν”„λ‘ νŠΈ : ES6 λ°±μ—”λ“œ : Lodash


⬆ λͺ©μ°¨



좜처

μ„±λŠ₯ 비ꡐ μ‚¬μ΄νŠΈ

μ—¬λŸ¬λΆ„μ˜ λŒ“κΈ€μ΄ 큰힘이 λ©λ‹ˆλ‹€. (๑‒̀ㅂ‒́)و✧


Written by@[AGUMON]
아ꡬλͺ¬ 기술 λΈ”λ‘œκ·Έ

GitHubFacebook