Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 점 표기법 문자열을 값을 가진 중첩 객체로 변환하는 방법

점 표기법 문자열을 중첩 객체로 변환하기

다음과 같이 점 표기법(dot notation)으로 작성된 문자열이 있다고 가정해 보겠습니다.

const keys = "details1.details2.details3.details4.details5"

그리고 이 키 경로의 마지막에 저장할 값은 다음과 같습니다.

const firsName = "David";

점 표기법 문자열을 실제 값이 담긴 중첩 객체(nested object)로 변환하려면 split('.')map()을 함께 활용하면 됩니다. 먼저 split('.')으로 문자열을 개별 키로 나눈 뒤, map()으로 각 키를 순회하면서 객체를 단계별로 중첩시키는 방식입니다.

예제 코드

const keys = "details1.details2.details3.details4.details5"
const firsName = "David";
var tempObject = {};
var container = tempObject;
keys.split('.').map((k, i, values) => {
    container = (container[k] = (i == values.length - 1 ? firsName : {}))
});
console.log(JSON.stringify(tempObject, null, ' '));

코드 동작 원리

  • tempObject는 최종 결과가 저장될 빈 객체이며, container는 현재 작업 중인 객체를 가리키는 참조 변수입니다.
  • split('.')을 호출하면 keys 문자열이 ['details1', 'details2', 'details3', 'details4', 'details5'] 배열로 분리됩니다.
  • map()이 각 키를 순회하면서 container[k]에 새로운 빈 객체({})를 할당하고, container 참조를 그 하위 객체로 이동시킵니다.
  • 마지막 키에 도달하면(i == values.length - 1) 빈 객체 대신 firsName 값("David")을 할당하여 중첩 구조를 완성합니다.

실행 방법

위 프로그램을 실행하려면 다음 명령어를 사용합니다.

node fileName.js

여기서는 파일 이름이 demo227.js라고 가정합니다.

출력 결과

실행 결과는 다음과 같습니다.

PS C:\Users\Amit\JavaScript-code> node demo227.js
{
 "details1": {
  "details2": {
   "details3": {
    "details4": {
     "details5": "David"
    }
   }
  }
 }
}