JavaScript - 문제 미리보기
문제 771
medium
서버에서 배열 형태의 JSON을 받았을 때의 처리 방법으로 올바른 것은?
```javascript
// 서버 응답: '["Ford", "BMW", "Fiat"]'
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myArr = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = _______;
};
```
```javascript
// 서버 응답: '["Ford", "BMW", "Fiat"]'
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myArr = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = _______;
};
```
정답: B
JSON 배열과 JSON 객체의 처리 방식 차이를 이해하는 중요한 문제입니다.
JSON 데이터 타입별 처리:
객체인 경우:
```javascript
// 서버 응답: '{"name":"John", "age":30}'
const myObj = JSON.parse(responseText);
console.log(myObj.name); // "John" - 속성명으로 접근
```
배열인 경우:
```javascript
// 서버 응답: '["Ford", "BMW", "Fiat"]'
const myArr = JSON.parse(responseText);
console.log(myArr[0]); // "Ford" - 인덱스로 접근
console.log(myArr.length); // 3 - 배열 길이
```
각 옵션 분석:
1. `myArr.name` ❌ - 배열에는 name 속성이 없음
2. `myArr[0]` ✅ - 첫 번째 요소 "Ford"를 반환
3. `myArr.length` ⚠️ - 배열 길이(3)를 반환하지만, 요소 값은 아님
4. `myArr.first` ❌ - JavaScript 배열에는 first 속성이 없음
실제 활용 예시:
```javascript
// 모든 요소 출력
for (let i = 0; i < myArr.length; i++) {
console.log(myArr[i]);
}
// 또는 forEach 사용
myArr.forEach(car => console.log(car));
```
JSON 데이터 타입별 처리:
객체인 경우:
```javascript
// 서버 응답: '{"name":"John", "age":30}'
const myObj = JSON.parse(responseText);
console.log(myObj.name); // "John" - 속성명으로 접근
```
배열인 경우:
```javascript
// 서버 응답: '["Ford", "BMW", "Fiat"]'
const myArr = JSON.parse(responseText);
console.log(myArr[0]); // "Ford" - 인덱스로 접근
console.log(myArr.length); // 3 - 배열 길이
```
각 옵션 분석:
1. `myArr.name` ❌ - 배열에는 name 속성이 없음
2. `myArr[0]` ✅ - 첫 번째 요소 "Ford"를 반환
3. `myArr.length` ⚠️ - 배열 길이(3)를 반환하지만, 요소 값은 아님
4. `myArr.first` ❌ - JavaScript 배열에는 first 속성이 없음
실제 활용 예시:
```javascript
// 모든 요소 출력
for (let i = 0; i < myArr.length; i++) {
console.log(myArr[i]);
}
// 또는 forEach 사용
myArr.forEach(car => console.log(car));
```
💡 학습 팁
이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.