본문 바로가기
  • 포르쉐타고싶다
인포테인먼트 - development/javascript

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

by 지오ㄴl 2020. 3. 1.

여러 (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명을 갖고있다.

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

 

 

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

반응형

댓글