안녕하세요. 책을 사서 열심히 공부하고 있는 학생입니다. 덕분에 재밌게 배우고 있습니다.
문제를 풀다가 7장의 10번 문제에 질문이 있습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
//메소드
function set(title,author,price){
this.title = title;
this.author =author;
this.price =price;
}
</script>
</head>
<body>
<h2>book 객체 만들기</h2>
<hr>
<script>
var i;
var bookArray = new Array();
var newArray = new Array();
for(i=0;i<5;i++){
bookArray[i] = prompt("콤마(,)로 분리하면서 책제목 저자 가격 순으로 입력","");
}
for(i=0;i<5;i++){
sp =bookArray[i].split(",");
var book = new Object();
book.title = "HTML";
book.author = "황기태";
book.price = "20000";
book.set=set;
book.set(sp[0],sp[1],sp[2]);
newArray[i] = book;
}
for(i=0;i<5;i++){
document.write(newArray[i] + "<br>");
}
document.write("<hr>가장 가격이 비싼 책은 ");
</script>
</body>
</html>
이렇게 작성을 했는데 결과는
book 객체 만들기
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
가장 가격이 비싼 책은
이렇게 나옵니다. ㅜㅜ
배열에 넣은 객체가 제대로 출력이 안되네요. 어느부분에서 잘못했는지 알려주실수 있으신가요?
하하, 사용자 객체 만들기, 배열 뭐 이런 것 처음하면 조금 어렵습니다.
하나씩 설명해보겠습니다. 학생님이 작성한 코드에서 수정하면서 설명을 드리지요.
1. 학생님은 bookArray 배열에 prompt()가 리턴하는 문자열을 배열에 저장해두려고 합니다. 그러면 이 코드는 문제 없습니다.
for(i=0;i<5;i++){
bookArray[i] = prompt("콤마(,)로 분리하면서 책제목 저자 가격 순으로 입력","");
}
2. 아래 코드는 책 정보를 하나 저장하기 위해 프로퍼티를 만드는 작업입니다. 좋습니다.
그런데 set() 메소드를 작성하여 set()에서 사용자가 입력한 책의 각 속성을 book에 저장할 필요는 없습니다.
var book = new Object();
book.title = "HTML";
book.author = "황기태";
book.price = "20000";
book.set=set;
book.set(sp[0],sp[1],sp[2]);
newArray[i] = book;
이 코드는 다음과 같이 고치면 될 것 같습니다. 간단해 졌죠?
var book = new Object();
book.title = sp[0];
book.author = sp[1];
book.price = sp[2];
newArray[i] = book;
3. 그리고 다음 코드는 newArray에 저장해둔 book 객체를 모두 출력하려고 하였는데, 프로퍼티를 하나씩 출력하여야 합니다.
for(i=0;i<5;i++){
document.write(newArray[i] + "<br>");
}
이렇게 고치면 되지요.
for(i=0;i<5;i++){
document.write(newArray[i].title + ", ");
document.write(newArray[i].author + ", ");
document.write(newArray[i].price + "<br>");
}
제가 설명한대로 다시 붙여서 완성해보세요.
나머지는 스스로 해결하세요.
그럼