인포테인먼트 - development/javascript

[javascript] 여러 property프로퍼티((key : value)쌍)을 갖고 있는 객체를 배열화하기

지오ㄴl 2020. 3. 1. 03:36

여러 (key, value)들을 갖고있는 객체를 배열화할 일이 있다.

예를 들면

클라이언트가 요청한 리뷰 내용들을 데이터베이스에 저장하는 상황에서

서버는 클라이언트가 요청한 데이터를 데이터베이스 쿼리문에 인용해야 한다.

 

클라이언트에서 보낸

{
	"reviewTitle" : "어서오세요",
	"reviewComment" : "안녕하세요 홍지원입니다"
}

 

라는 Review 객체를 보냈다고 가정하자

 

데이터베이스의 테이블명이 review라고 할때

서버는 코드상에서 쿼리문을

 

query = 'INSERT INTO review (review_title, review_comment) VALUES (?, ?)'

 

라고 작성하고 저 두개의 ?에 클라이언트가 보낸 객체의 두 프로퍼티를 그대로 갖다 쓰면 된다.

물론 저 요청 객체의 각 프로퍼티를 각각 필드로 따로 꺼내서 저장해서

 


  let reviewTitle = Review.reviewTitle;
  let reviewComment = Review.reviewComment;
  

 

대괄호 안에 넣어서 배열로 보내는 방법도 있지만

 


  [reviewTitle, reviewComment]
  

 

저장해야 하는 프로퍼티가 많아지거나 필드로 메모리가 쓰이는 것이 아까울 수 있다.

 

이 때 저 let으로 필드로 저장하는 단계를 생략하고싶을 때 필요한 것이다.

즉, 저 Review 객체를 바로 배열화하는 것

 

그러기 위해서 필요한 것은 'for'과 'key'인데!

 

  for( key in '객체') {}

 

이렇게 하면 저 key가 객체의 각 프로퍼티를 둘러본다.

바로 사용해 보도록 하겠다

 

  var arr = [];

  for( key in Review ) {
  	arr.push(Review[key])
  }

  console.log(arr); //  [ "어서오세요", "안녕하세요 홍지원입니다" ]

 

이렇게 "객체를 바로 배열화" 할 수 있는 것이다.

 

익숙하지 않은 점은 저 key를 추출해보면 각 프로퍼티의 key명을 갖고있다.

그리고 배열에서 많이 보는 대괄호[]를 객체에 적용하고 있다는 것이다.

 

 

위 가정에서처럼 객체의 각 프로퍼티를 따로 저장하는 과정을 생략하고 싶은 개발자분들께 추천드린다.

반응형