독립형 Google 스크립트 프로젝트가 있습니다. 일부 API를 통해 가져 오기에서 플랫 JSON 답변을 얻었습니다. 실제로 중첩되어야하지만 그렇지 않습니다. 내 JSON에는 중첩 대신 레벨 번호가 있습니다. 예를 들면 :
[ { level: 1, first_name: 'Sammy', last_name: 'Snow', cloth_num: 8, cloth: null, color: null, day: null, sales: 1000},
{ level: 2, first_name: null, last_name: null, cloth_num: 3, cloth: 'shirt', color: 'red', day: null, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 1, cloth: null, color: null, day: 1, sales: 100},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 200},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'jeans', color: 'blue', day: null, sales: 700},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
{ level: 1, first_name: 'Danny', last_name: 'Crow', cloth_num: 15, cloth: null, color: null, day: null, sales: 2000},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 't-shirt', color: 'red', day: null, sales: 800},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 1, sales: 500},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 300},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'hat', color: 'blue', day: null, sales: 700},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
{ level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'socks', color: 'blue', day: null, sales: 500},
{ level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
{ level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 200} ]
두 번째 수준을 첫 번째 수준에 중첩하는 스크립트를 작성했습니다.
function convertFlat(dataq) {
let map = new Map()
let x = dataq.forEach(x => {if (x.level === 1) x.next_level=[], map.set(x.first_name,x)})
for(let i = 0; i < dataq.length; i++){
if(dataq[i].level === 1) {
l = map.get(dataq[i].first_name);
continue;
}
else l.next_level.push(dataq[i])
}
console.log([...map.values()])
}
세 번째 수준을 두 번째 수준에 중첩하려면 어떻게해야합니까? 저는 Google Apps Script를 처음 사용하며 두 번째 및 세 번째 수준에서이 루프를 반복하는 방법을 모릅니다.
내 자신을 저항 할 수 없었습니다 ... 여기에 제안 된 코드가 있습니다.
function unFlat(fj) {
var arr=[];
var objL1, objL2, objL3;
var prev_level;
for(var i=0; i<fj.length;i++) {
var obj=fj[i];
switch(obj.level) {
case 3:
objL3={};
objL3.cloth_num=obj.cloth_num;
objL3.day=obj.day;
objL3.sales=obj.sales;
objL2.items.push(objL3);
prev_level=3;
break;
case 2:
objL2={};
objL2.cloth_num=obj.cloth_num;
objL2.cloth=obj.cloth;
objL2.color=obj.color;
objL2.sales=obj.sales;
objL2.items=[];
objL1.cloths.push(objL2);
prev_level=2;
break;
case 1:
if(prev_level==3) arr.push(objL1);
objL1={};
objL1.first_name=obj.first_name;
objL1.last_name=obj.last_name;
objL1.cloth_num=obj.cloth_num;
objL1.sales=obj.sales;
objL1.cloths=[];
prev_level=1;
break;
}
}
if(fj.length) arr.push(objL1);
return arr;
}
arr
고객 수준에서 개체를 보유하고 고객
objL1, objL2, objL3
, 옷 및 항목에 대한 정보를 각각 보유합니다. 는 아닌
prev_level
것으로 시작 하고 cusotmer / 에 언제 . 참고 : 플랫 json 작업을 마쳤을 때 푸시되지 않은 아직 구성되지 않은 마지막 cusotmer / - " " 를 푸시해야 합니다. 정보가 전혀 없었습니다. 각각에서 우리는 관련 속성을 수집하고 그 배열에 한 단계 위로 밀어 넣습니다. 이것이 의미가 있기를 바랍니다!undefined
3
push
ObjL1
arr
ObjL1
if
case
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다