Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

데이지 체인/점 표기법의 JavaScript 개체를 중첩 개체 및 배열이 있는 개체로 어떻게 평평하게 합니까?

<시간/>

다음과 같은 객체가 있다고 가정해 보겠습니다. -

 const obj ={ "firstName":"John", "lastName":"Green", "car.make":"Honda", "car.model":"Civic", "car.revisions.0. 마일":10150, "car.revisions.0.code":"REV01", "car.revisions.0.changes":"", "car.revisions.1.miles":20021, "car.revisions.1 .code":"REV02", "car.revisions.1.changes.0.type":"asthetic", "car.revisions.1.changes.0.desc":"왼쪽 타이어 캡", "car.revisions" .1.changes.1.type":"mechanic", "car.revisions.1.changes.1.desc":"엔진 압력 조절기", "visits.0.date":"2015-01-01", "visits.0.dealer":"DEAL-001", "visits.1.date":"2015-03-01", "visits.1.dealer":"DEAL-002"};

우리는 그러한 객체 하나를 가져와 중첩 객체와 배열로 평면화하는 JavaScript 함수를 작성해야 합니다.

따라서 위 배열의 출력은 다음과 같아야 합니다. -

const output ={ firstName:'John', lastName:'Green', car:{ make:'Honda', 모델:'Civic', 리비전:[ { 마일:10150, 코드:'REV01', 변경 사항:''}, { 마일:20021, 코드:'REV02', 변경 사항:[ { type:'asthetic', desc:'왼쪽 타이어 캡' }, { type:'mechanic', desc:'엔진 압력 조절기' } ] } ] }, 방문:[ { 날짜:'2015-01-01', 딜러:'DEAL-001' }, { 날짜:'2015-03-01', 딜러:'DEAL-002' } ]}; 

예시

 const obj ={ "firstName":"John", "lastName":"Green", "car.make":"Honda", "car.model":"Civic", "car.revisions.0. 마일":10150, "car.revisions.0.code":"REV01", "car.revisions.0.changes":"", "car.revisions.1.miles":20021, "car.revisions.1 .code":"REV02", "car.revisions.1.changes.0.type":"asthetic", "car.revisions.1.changes.0.desc":"왼쪽 타이어 캡", "car.revisions" .1.changes.1.type":"mechanic", "car.revisions.1.changes.1.desc":"엔진 압력 조절기", "visits.0.date":"2015-01-01", "visits.0.dealer":"DEAL-001", "visits.1.date":"2015-03-01", "visits.1.dealer":"DEAL-002"}; const unflatten =(obj ={}) => { const 결과 ={}; let temp, 부분 문자열, 속성, i; for (obj의 속성) { substrings =property.split('.'); 온도 =결과; for (i =0; i  

출력

콘솔의 출력은 -

{ "firstName":"John", "lastName":"Green", "car":{ "make":"Honda", "model":"Civic", "revisions":[ { "miles" :10150, "코드":"REV01", "변경":"" }, { "마일":20021, "코드":"REV02", "변경":[ { "유형":"아스틱", "데스크" ":"왼쪽 타이어 캡" }, { "type":"mechanic", "desc":"엔진 압력 조절기" } ] } }, "visits":[ { "date":"2015-01-01" , "딜러":"DEAL-001" }, { "날짜":"2015-03-01", "딜러":"DEAL-002" } ]}