등록일 : ,
undefined 값을 설정하면 키가 제거됩니다
JSON 객체에서 특정키를 완전히 제거하는 방법입니다.
값을 지우는게 아닌 키 자체를 완전히 제거하는 방법입니다.
아래 예제를 봅시다 ^^
자바스크립트
// JSON 정의
var com = {
"cpu":"Intel Xeon Westmere E5620 2.40Ghz / 12MB L3",
"ram":"DDR3 PC-12800R 6GB(R-ECC)",
"hdd":"SSD 80GB X 1EA",
"traffic":"1 Gbps",
"rack":"1U",
"cpu_ea":"1",
"core_ea":"4"
};
// cpu 키값 제거
com.cpu = undefined;
// (추가된 내용) delete 를 사용해서 제거해도 됩니다.
// delete com.cpu;
// 아래는 값만 변경, 혹시나 하지만 키는 유지
com.ram = false;
com.hdd = null;
// undefined 값을 설정하면 됩니다.
// 참고로 null, false 는 그냥 값으로 설정 되므로 키가 제거되지 않습니다.
키를 제거할 일이 생겼는데 혹시나 하는 마음에
undefined 를 해보니 제거가 되었네요.
추가된 내용 : delete 를 사용해서 제거해도 됩니다. ^^;
이게 더 정확한 방법입니다.
결과를 살펴 봅시다
위 예제에서 처리된 내용을 아래 버튼을 누르면 볼 수 있습니다.
cpu 키는 제거된 것을 볼 수 있습니다.
cpu 키는 제거된 것을 볼 수 있습니다.
HTML
<button type="button" onclick="alert(JSON.stringify(com))">JSON 문자열 값으로 보기</button>
JSON.stringify(JSON객체) 를 하면 문자열로 변환이 됩니다.
호기심

변수에 이 방법을 시도해 보았습니다.
변수가 제거 된것 같지는 않아 보였고 undefined 라고 나오는 것으로 보니
undefined 로 값이 정의(?) 된것 같네요.
정의되지 않은 변수를 호출하면 스크립트 에러가 나지만
위 방법을 쓴 변수를 호출하면 에러가 나지 않습니다.
즉 한번 선언된 변수는 제거가 되지 않는것 같네요.
하지만 객체안에 선언된 키는 제거가 됩니다.
추가 : delete 를 사용해도 한번 선언된 변수는 제거되지 않네요.
마지막 실험
준비
1. aa, bb, cc 변수를 대상으로 실험합니다.
2. aa 만 undefined 로 선언하고 bb, cc 는 아예 선언하지 않습니다.
alert 창을 사용해서 봅니다.
결과
1. aa 는 당연히 undefined 입니다.
2. bb 는 typeof 로 확인해 보면 undefined 입니다. (bb는 아예 정의 되지 않음)
3. 그런데 aa 와 bb는 값이 다르다고 판단되네요. 둘다 undefined 아니던가요 .. ㄷㄷ
4. bb 와 cc 는 같다고 판단되는군요. 애초에 존재하지 않는 것과 존재하는것의 차이인가 봅니다.
아래 버튼을 눌러보세요~
1. aa, bb, cc 변수를 대상으로 실험합니다.
2. aa 만 undefined 로 선언하고 bb, cc 는 아예 선언하지 않습니다.
alert 창을 사용해서 봅니다.
결과
1. aa 는 당연히 undefined 입니다.
2. bb 는 typeof 로 확인해 보면 undefined 입니다. (bb는 아예 정의 되지 않음)
3. 그런데 aa 와 bb는 값이 다르다고 판단되네요. 둘다 undefined 아니던가요 .. ㄷㄷ
4. bb 와 cc 는 같다고 판단되는군요. 애초에 존재하지 않는 것과 존재하는것의 차이인가 봅니다.
아래 버튼을 눌러보세요~
HTML
<button type="button" onclick="alert(typeof aa)">typeof aa</button>
<button type="button" onclick="alert(typeof bb)">typeof bb</button>
<button type="button" onclick="alert(aa === typeof bb)">aa === typeof bb</button>
<button type="button" onclick="alert(typeof bb === typeof cc)">typeof bb === typeof cc</button>
자바스크립트
// bb 와 cc 는 정의하지 않음
var aa = undefined;
결론 : 흔적은 지울 수 없다(!?), 착하게 살자. @_@:
잘못한 일에 아무리 사과하고 처벌을 받았더라도 그게 없었던 일이 되는게 아닌것 처럼요.
다소 철학적(?) 이네요. 뜻밖의 마무리군요. (원래 이걸 생각한건 아닙니다)
그런면에서 aa === typeof bb 가 false 로 되는게 맞는것 같네요.
방문해 주셔서 감사드립니다 !!