HOME > lodash

[lodash] fromPairs() 메소드 알아보기

마지막 수정일 : 2022-09-06 / 생성일 : 2022-07-29
275
View Count
lodash 메소드 중 하나는 fromPairs()에 대하여 알아봅니다.



# lodash 메소드 fromPairs()
이름처럼 fromPairs()는 pair의 사전적 의미인 한 쌍과 같이 하나의 쌍을 이루는 값으로부터 객체를 생성하는 메소드입니다. 즉 pair가 되는 두 개의 값 key와 value를 가지고 있어야 하겠죠. 예를들어 key와 value로 이루어진 배열에서 객체를 얻을 때 fromPairs()를 사용하면 쉽게 객체로 변환할 수 있겠죠.

다음으로 문법입니다. 사용방법은 매우 간단합니다.

_.fromPairs(pair)



pair // key, value로 이루어진 배열 값

이제 몇 가지 예제를 알아봅니다.

예제 1)
myArray = [[ 'a', 1 ], ['b', 2], ['c', 3]]
myObj = _.fromPairs(myArray)

// Result
{
  a: 1,
  b: 2,
  c: 3
}


예제 2)
myArray = [[ 'no', 1 ], ['sitename', '웹이즈프리'], ['url', 'webisfree.com']]
myObj = _.fromPairs(myArray)

// Result
{
  no: 1,
  sitename: '웹이즈프리',
  url: 'webisfree.com'
}


예제 3)
만약 배열의 value 값으로 객체를 가지면 어떻게 될까요?
myArray = [[ 'a', {'aa': '2 depths'} ]]
myArray2 = [[ 'a', {'aa': { 'aaa': '3 depths'} } ]]

myObj = _.fromPairs(myArray)
myObj2 = _.fromPairs(myArray2)

아래의 결과를 보면 객체가 사용해도 문제없이 동일하게 동작합니다. 즉 value의 값으로 원시값이나 참조값 모두 사용 가능합니다.
// Result
{
  a: {
    aa: '2 depths'
  }
}

{
  a: {
    aa: {
      '3 depths'
    }
  }
}


예제 4)
만약 값이 하나 하나라 [] 기호를 생략해서 하나만 써도 될까요? 아래 예제처럼 말이죠.
myArray = [ 'a', '1' ]
myObj = _.fromPairs(myArray)

// Result
{
  1: undefined,
  a: undefined
}

결과를 보면 값이 모두 undefined로 나타납니다. 즉 배열 각각의 값을 하나의 pair로 인식하기 때문에 value가 없는 key만 가진 객체로 결과를 반환하게 됩니다.


여기까지 lodash 메소드 fromPairs()에 대하여 알아보았습니다.


! 팁 및 정보
추가로 lodash에는 fromPairs() 처럼 동작하는 메소드가 존재하는데요 바로 toPairs()입니다. 사실 toPairs()는 fromPairs()와는 완전히 반대로 동작하는 메소드입니다. 즉 배열에서 객체를 생성하는게 아닌 객체에서 배열을 생성합니다.
생각해보니 배열의 내장 메소드에도 비슷한 메소드가 존재하죠? 바로 Object.entries()입니다. 코드를 살펴볼까요?
myArray = Object.entries({a: 1, b: 2, c: 3})
myObj = _.fromPairs(myArray)

// Result
{ a: 1, b: 2, c: 3 }

두 가지 방법 모두 알아두면 좋겠습니다.

Author ByEnSSo