2차원배열 개념으로 json 이용하기(연관배열)
예전에 딕셔너리도 이렇게 처리하는것을 본것 같은 기억이 있는데요.
php에서의 배열은 간단한데 여기건 별도로 만들어진 배열을 넣는 방식으로 처리 합니다.
json 이라고 했지만 아래가 json은 아니죠. 그렇게 만들면 되서 json 이라고 하였습니다. json 다른 언어에서도 사용하여 요즘은 언어 독립형이 된듯 합니다.
let aGlbInfo = {};
// 초기화 후 기존것을 읽어서 넣어 준 다음 추가 한다
function set_obj_data ( idx1, idx2, idxVal )
{
let aTemp = {};
for(var key in aGlbInfo[idx1]) {
var val = aGlbInfo[idx1][key];
aTemp[key] = val;
}
aTemp[idx2] = idxVal;
aGlbInfo[idx1] = aTemp;
}
set_obj_data('test1', '22', 'val1');
set_obj_data('test1', '33', 'val3');
set_obj_data('test2', '33', 'val4');
console.log(aGlbInfo);
// 삭제
// delete aGlbInfo.test1[22];
// console.log(aGlbInfo);
테스트 할때 여러번 console.log로 찍으면서 삭제를 하면 순차적으로 처리 되지 않는다는것을 볼 수 있는데요.
실제 사용은 그렇게 하지 않게 때문에 문제 되는 경우는 없을텐데 순차적으로 삭제하고 추가하고 하는 경우가 있다면 알고 있으면 좋습니다.
위부분에서 중요한 부분은 넣기 전에 기존의 것을 읽어와서 정리한 다음 2차원 배열 부분에 추가 한다는 것입니다.
-- 아래추가 -- 참고 --
//
$(document).ready(function()
{
// 공간을 정하지 않고 필요한 만큼 사용하기 위한것
let oTest2 = {};
let oTest = {};
// 오류가 발생 한다
// oTest['idname']['pageNum'] = 5;
// undefined 를 출력 한다
// console.log( typeof oTest['idname'] )
// 에러 발생 - 즉, 오류가 나지 않게 하려면 순차적으로 확인을 해야 한다
// console.log( typeof oTest['idname']['pageNum'] )
oTest2['pageNum'] = 2;
console.log(oTest2);
// 이전것을 덮어 씌운다
oTest2 = {
name: 'test22',
age : 23,
posX: 23
}
console.log(oTest2);
oTest['idname'] = oTest2;
console.log(oTest);
console.log( oTest['idname']['pageNum'] );
// 있으면 오류 없이 값 변경도 잘 된다
oTest['idname']['pageNum'] = 5;
console.log( oTest['idname']['pageNum'] );
// 모두 출력하여 확인 하기
for(var key in oTest['idname'] ) {
console.log('key: ', key);
}
});
* 연관배열 형태는 아래를 참고하세요.