라라리라
2023.08.18 / Step 9 [문자열] - 코딩 30 일차 본문
문자열5_개념01_JSON.html
<script>
/*
[개념] JSON
[1] Key와 Value로 이루어진 배열
[2] 일반 배열은 index와 value로 이루어져 있고,
값이 추가될때 마다 알아서 index가 1씩 증가되지만,
[3] JSON은 index를 직접 지정하는 것을 의미한다.
[4] 중괄호로 데이터를 감싼다.
*/
// 배열은 자동으로 0부터 시작하는 인덱스가 지정된다.
let arr1 = ["Hong", 19];
document.write(arr1[0] + ", " + arr1[1] + "<br>");
// JSON은 0으로 시작하는 인덱스 대신
// name, age와 같은 이름으로 직접 인덱스를 설정할 수 있으며,
// 이를 인덱스라 하지 않고 Key라고 부르고 있다.
let arr2 = {"name" : "Hong", "age" : 19};
document.write(arr2["name"] + ", " + arr2["age"] + "<br>");
</script>
문자열5_개념02_JSON이차원.html
<script>
let arr = [
[1001, "김철수", 10, 20, 30],
[1002, "박민정", 40, 60, 10],
[1003, "이상아", 15, 10, 50],
[1004, "조민수", 16, 40, 20]
]
/*
위와 같은 배열이 있을 때 각 학생별로
총점을 구하고 싶다면 아래와 같이 식을 작성한다.
*/
let total = 0;
for(let i=0; i<arr.length; i++) {
total += arr[i][2] + arr[i][3] + arr[i][4];
}
document.write("total = " + total + "<br>");
/*
위 배열을 JSON으로 바꿔보자.
*/
var jsonArr = [
{"num" : 1001, "name" : "김철수", "math" : 10, "eng" : 20, "kor" : 30},
{"num" : 1002, "name" : "박민정", "math" : 40, "eng" : 60, "kor" : 10},
{"num" : 1003, "name" : "이상아", "math" : 15, "eng" : 10, "kor" : 50},
{"num" : 1004, "name" : "조민수", "math" : 16, "eng" : 40, "kor" : 20}
];
total = 0;
for(let i=0; i<jsonArr.length; i++) {
// 코드가 훨씬 직관적으로 변한다.
total += jsonArr[i]["math"] + jsonArr[i]["eng"] + jsonArr[i]["kor"];
}
document.write("total = " + total + "<br>");
</script>
문자열5_개념03_JSON출력.html
<script>
/*
[개념] JSON 데이터 출력
[1] Object.keys(변수명)
[2] JSON.stringfy(변수명)
*/
let jsonArr = {"num" : 1001, "name" : "김철수", "math" : 10, "eng" : 20, "kor" : 30};
// [object Obejct]
document.write(jsonArr + "<br>");
// [방법1]
/*
num : 1001
name : 김철수
math : 10
eng : 20
kor : 30
*/
let keys = Object.keys(jsonArr);
document.write(keys + "<br>");
for(let i=0; i<keys.length; i++) {
let key = keys[i];
document.write(key + " : " + jsonArr[key] + "<br>");
}
// [방법2]
// {"num":1001,"name":"김철수","math":10,"eng":20,"kor":30}
jsonArr = JSON.stringify(jsonArr);
document.write(jsonArr);
</script>
문자열5_개념04_JSON추가.html
<script>
/*
[개념] JSON 데이터 추가
변수명["key"] = value의 형태로
데이터를 추가할 수 있다.
*/
let info = {"name" : "Hong", "age" : 19};
info["kor"] = 39;
info["math"] = 42;
info["eng"] = 90;
info["home"] = "soon";
keys = Object.keys(info);
document.write(keys + "<br>");
for(let i = 0; i < keys.length; i++){
document.write(keys[i] + " : " + info[keys[i]] + " <br>");
}
info = JSON.stringify(info);
document.write(info + "<br>");
</script>
문자열5_개념05_JSON삭제.html
<script>
/*
[개념] JSON 데이터 삭제
delete 변수명["key"]
데이터를 삭제할 수 있다.
*/
let info = {"name" : "Hong", "age" : 19, "kor" : 39, "math" : 42, "eng" : 90};
delete info["age"];
// {"name":"Hong","kor":39,"math":42,"eng":90}
info = JSON.stringify(info);
document.write(info);
</script>
문자열5_개념08_학생관리.html
<script>
let jsonArr = [
{"num" : 1001, "name" : "김철수", "math" : 10, "eng" : 20, "kor" : 30},
{"num" : 1002, "name" : "박민정", "math" : 40, "eng" : 60, "kor" : 10},
{"num" : 1003, "name" : "이상아", "math" : 15, "eng" : 10, "kor" : 50},
{"num" : 1004, "name" : "조민수", "math" : 16, "eng" : 40, "kor" : 20}
];
/*
[문제1]
국어점수가 수학점수 보다 높은 학생들의 번호와 이름을 출력하시오.
[정답1]
1001, 김철수
1003, 이상아
1004, 조민수
*/
for(let i=0; i<jsonArr.length; i++) {
if(jsonArr[i]["kor"] > jsonArr[i]["math"]) {
document.write(jsonArr[i]["num"] + ", " + jsonArr[i]["name"] + "<br>");
}
}
/*
[문제2]
국어,수학,영어 세 과목의 평균이 30점 이상이면 합격이다.
win항목을 추가하고 합격이면 true, 불합격이면 false를 추가하시오.
[정답2]
[{"num":1001,"name":"김철수","math":10,"eng":20,"kor":30,"win":false},
{"num":1002,"name":"박민정","math":40,"eng":60,"kor":10,"win":true},
{"num":1003,"name":"이상아","math":15,"eng":10,"kor":50,"win":false},
{"num":1004,"name":"조민수","math":16,"eng":40,"kor":20,"win":false}]
*/
for(let i = 0; i < jsonArr.length; i++){
let avg = (jsonArr[i]["math"] + jsonArr[i]["eng"] + jsonArr[i]["kor"]) / 3
if(avg >= 30) jsonArr[i]["win"] = true;
else jsonArr[i]["win"] = false;
}
jsonArr = JSON.stringify(jsonArr);
document.write(jsonArr)
</script>
문자열5_개념09_정렬.html
<script>
/*
[문자열 정렬]
문자도 숫자와 같이 내부적으로
각각의 문자에 해당하는 숫자로 되어있다.
예를 들어 a가 1이면 b는 2이다.
그렇기 때문에 문자도 크다 작다로 비교할 수 있다.
*/
let arr = ["a", "e", "c", "d", "b"];
for(let i=0; i<arr.length; i++) {
let minNum = arr[i];
let minIndex = i;
for(let j=i; j<arr.length; j++) {
if(minNum > arr[j]) {
minNum = arr[j];
minIndex = j;
}
}
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
document.write(arr);
</script>
문자열5_문제01_포인트.html
<script>
/*
[문제]
userList는 회원들의 정보이다.
userno 는 회원번호이다.
username 은 회원이름이다.
pointList는 회원들의 점수이다.
userno 는 회원번호이다.
point는 포인트 점수이다.
포인트 점수가 가장높은 회원의 점수와 이름을 구하시오.
[정답]
5 김철수
*/
let userList = [
{"userno" : 1001 , "username" : "김철수"},
{"userno" : 1002 , "username" : "이만수"},
{"userno" : 1003 , "username" : "이영희"}
];
let pointList = [
{"userno" : 1001 , "point" : 1},
{"userno" : 1002 , "point" : 3},
{"userno" : 1001 , "point" : 4},
{"userno" : 1003 , "point" : 2},
{"userno" : 1003 , "point" : 1}
];
let rs = [];
for(let i = 0; i < userList.length; i++){
count = 0;
let temp = {}
temp["userno"] = userList[i]["userno"];
temp["username"] = userList[i]["username"];
for(let j = 0; j < pointList.length; j++){
if(userList[i]["userno"] == pointList[j]["userno"]) count += pointList[j]["point"]
}
temp["point"] = count;
rs.push(temp);
}
//=========================================================================
let max = 0;
let maxid = 0;
for(let i = 0; i < rs.length; i++){
if(rs[i]["point"] > max){
max = rs[i]["point"];
maxid = i;
}
}
document.write("포인트가 가장 높은 회원은? = " + rs[maxid]["username"] + " " + rs[maxid]["point"] + "포인트" + "<br>");
</script>
문자열5_문제02_상품매출.html
<script>
/*
[문제]
memberList는 회원 목록 데이터이다.
number는 회원 번호이다.
id는 회원아이디이다.
itemList은 쇼핑몰 판매 상품 데이터이다.
itemName는 상품 이름이다.
price는 아이템 가격이다.
orderList는 오늘 주문 목록이다.
orderid는 주문한 회원 id 이다.
itemname은 주문한 상품이름이다.
count는 주문한 상품개수이다.
각 회원별 주문 총액을 구하시오.
[정답]
{'id': 'qwer1234', 'total': 4400}
{'id': 'pythongood', 'total': 28000}
{'id': 'testid', 'total': 16000}
*/
let memberList = [
{"number" : 1001, "id" : "qwer1234" },
{"number" : 1002, "id" : "pythongood"},
{"number" : 1003, "id" : "testid"}
];
let itemList = [
{"itemname" : "사과", "price" : 1100},
{"itemname" : "바나나", "price" : 2000},
{"itemname" : "딸기", "price" : 4300}
];
let orderList = [
{"orderid" : "qwer1234", "itemname" : "사과", "count" : 3},
{"orderid" : "pythongood", "itemname" : "딸기", "count" : 6},
{"orderid" : "testid", "itemname" : "바나나", "count" : 1},
{"orderid" : "pythongood", "itemname" : "사과", "count" : 2},
{"orderid" : "testid", "itemname" : "바나나", "count" : 7},
{"orderid" : "qwer1234", "itemname" : "사과", "count" : 1}
];
let rs = [];
for(let i = 0; i < memberList.length; i++){
let total = 0;
let temp = {};
temp["id"] = memberList[i]["id"];
for(let j = 0; j < itemList.length; j++){
for(let k = 0; k < orderList.length; k++){
if(memberList[i]["id"] == orderList[k]["orderid"]){
if(itemList[j]["itemname"] == orderList[k]["itemname"]){
total += orderList[k]["count"] * itemList[j]["price"];
}
}
}
}
temp["total"] = total;
rs.push(temp);
}
for(let i = 0; i < rs.length; i++){
document.write(JSON.stringify(rs[i]) + "<br>");
}
</script>
문자열5_문제03_상품통계.html
<script>
/*
[문제]
memberList는 회원목록데이터이다.
number는 회원 번호이다.
id는 회원아이디이다.
itemList은 쇼핑몰 판매상품데이터이다.
itemName는 상품이름이다.
price는 아이템 가격이다.
orderList는 오늘 주문 목록이다.
orderid는 주문한 회원 id 이다.
itemname는 주문한 상품이름이다.
count는 주문한 상품개수이다.
각 아이템별로 구입한 회원이름과 개수를 구하시오.
단, 주문 목록에 없는 아이템은 구하지않는다.
[정답]
{"itemname":"고래밥","name":"이만수","count":1}
{"itemname":"고래밥","name":"김철민","count":1}
{"itemname":"새우깡","name":"이만수","count":1}
{"itemname":"새우깡","name":"김철민","count":1}
{"itemname":"새우깡","name":"이영희","count":3}
{"itemname":"감자깡","name":"이만수","count":1}
{"itemname":"감자깡","name":"이영희","count":1}
{"itemname":"칸쵸","name":"이영희","count":1}
{"itemname":"빼빼로","name":"이만수","count":1}
{"itemname":"빼빼로","name":"박민재","count":1}
{"itemname":"고구마깡","name":"이만수","count":1}
{"itemname":"고구마깡","name":"김철민","count":2}
*/
let memberList = [
{"membernumber" : 3001, "name" : "이만수"},
{"membernumber" : 3002, "name" : "김철민"},
{"membernumber" : 3003, "name" : "이영희"},
{"membernumber" : 3004, "name" : "조성아"},
{"membernumber" : 3005, "name" : "박민재"}
];
let itemList = [
{"itemnumber" : 100001, "itemname" : "고래밥"},
{"itemnumber" : 100002, "itemname" : "새우깡"},
{"itemnumber" : 100003, "itemname" : "감자깡"},
{"itemnumber" : 100004, "itemname" : "칸쵸"},
{"itemnumber" : 100005, "itemname" : "오징어땅콩"},
{"itemnumber" : 100006, "itemname" : "빼빼로"},
{"itemnumber" : 100007, "itemname" : "고구마깡"}
];
let orderList = [
{"membernumber" : 3001, "itemnumber" : 100001},
{"membernumber" : 3001, "itemnumber" : 100002},
{"membernumber" : 3003, "itemnumber" : 100004},
{"membernumber" : 3002, "itemnumber" : 100007},
{"membernumber" : 3003, "itemnumber" : 100003},
{"membernumber" : 3005, "itemnumber" : 100006},
{"membernumber" : 3002, "itemnumber" : 100002},
{"membernumber" : 3001, "itemnumber" : 100007},
{"membernumber" : 3003, "itemnumber" : 100002},
{"membernumber" : 3002, "itemnumber" : 100001},
{"membernumber" : 3001, "itemnumber" : 100003},
{"membernumber" : 3003, "itemnumber" : 100002},
{"membernumber" : 3002, "itemnumber" : 100007},
{"membernumber" : 3001, "itemnumber" : 100006},
{"membernumber" : 3003, "itemnumber" : 100002}
];
let rs = [];
for(let i = 0; i < itemList.length; i++){
for(let j = 0; j < memberList.length; j++){
let temp = {};
let count = 0;
for(let k = 0; k < orderList.length; k++){
if(itemList[i]["itemnumber"] == orderList[k]["itemnumber"]){
if(memberList[j]["membernumber"] == orderList[k]["membernumber"]){
count++;
}
}
}
if(count > 0){
temp["itemname"] = itemList[i]["itemname"];
temp["name"] = memberList[j]["name"];
temp["count"] = count;
rs.push(temp);
}
}
}
//===========================================
for(let i = 0; i < rs.length; i++){
document.write(JSON.stringify(rs[i]) + "<br>");
}
</script>
문자열5_문제04_상품별회원.html
<script>
/*
[문제]
memberList는 회원목록데이터이다.
number는 회원 번호이다.
id 는회원 아이디이다.
itemList은 쇼핑몰 판매 상품 데이터이다.
itemname은 상품이름이다.
price는 아이템 가격이다.
orderList는 오늘 주문 목록이다.
orderid는 주문한 회원 id 이다.
itemname는 주문한 상품이름이다.
count는 주문한 상품개수이다.
각 회원별 상품별 이름과 총가격을 구하시오.
단, 아무것도 주문하지 않은 회원은 구하지 않는다.
[정답]
{"id":"qwer1234","itemname":"사과","count":4,"total":4400}
{"id":"pythongood","itemname":"사과","count":2,"total":2200}
{"id":"pythongood","itemname":"딸기","count":6,"total":25800}
{"id":"testid","itemname":"바나나","count":8,"total":16000}
{"id":"cccddd","itemname":"사과","count":2,"total":2200}
{"id":"cccddd","itemname":"바나나","count":3,"total":6000}
*/
let memberList = [
{"number" : 1001, "id" : "qwer1234"},
{"number" : 1002, "id" : "pythongood"},
{"number" : 1003, "id" : "testid"},
{"number" : 1004, "id" : "aaabbb"},
{"number" : 1005, "id" : "cccddd"}
];
let itemList = [
{"itemname" : "사과", "price" : 1100},
{"itemname" : "바나나", "price" : 2000},
{"itemname" : "딸기", "price" : 4300}
];
let orderList = [
{"orderid" : "qwer1234", "itemname" : "사과", "count" : 3},
{"orderid" : "pythongood", "itemname" : "딸기", "count" : 6},
{"orderid" : "testid", "itemname" : "바나나", "count" : 1},
{"orderid" : "pythongood", "itemname" : "사과", "count" : 2},
{"orderid" : "testid", "itemname" : "바나나", "count" : 7},
{"orderid" : "qwer1234", "itemname" : "사과", "count" : 1},
{"orderid" : "cccddd", "itemname" : "바나나", "count" : 3},
{"orderid" : "cccddd", "itemname" : "사과", "count" : 2}
];
let rs = [];
for(let i = 0; i < memberList.length; i++){
for(let j = 0; j < itemList.length; j++){
let temp = {};
let count = 0;
let total = 0;
for(let k = 0; k < orderList.length; k++){
if(memberList[i]["id"] == orderList[k]["orderid"]){
if(itemList[j]["itemname"] == orderList[k]["itemname"]){
count += orderList[k]["count"];
}
}
}
if(count > 0){
temp["id"] = memberList[i]["id"];
temp["itemname"] = itemList[j]["itemname"];
temp["count"] = count;
temp["total"] = count * itemList[j]["price"];
rs.push(temp);
}
}
}
//==============================================================
for(let i = 0; i < rs.length; i++){
document.write(JSON.stringify(rs[i]) + "<br>");
}
</script>
문자열5_문제05_상품취소.html
<script>
/*
[문제]
itemList은 쇼핑몰 판매상품데이터이다.
itemName는 상품이름이다.
price는 아이템 가격이다.
orderList는 오늘 주문 목록이다.
ordernumber는 주문번호이다.
orderid는 주문한 회원 id 이다.
itemName는 주문한 상품이름이다.
count는 주문한 상품개수이다.
cancelList는 주문취소 목록이다.
cancelnumber는 주문을 취소한 번호이다.
취소한 상품 이름별 총가격을 구하시오.
[정답]
[{'itemname': '바나나', 'total': 22000},
{'itemname': '딸기', 'total': 25800}]
*/
let itemList = [
{"itemname" : "사과", "price" : 1100},
{"itemname" : "바나나", "price" : 2000},
{"itemname" : "딸기", "price" : 4300}
];
let orderList = [
{"ordernumber" : 100001, "orderid" : "qwer1234", "itemname" : "사과", "count" : 3},
{"ordernumber" : 100002, "orderid" : "pythongood", "itemname" : "딸기", "count" : 6},
{"ordernumber" : 100003, "orderid" : "testid", "itemname" : "바나나", "count" : 4},
{"ordernumber" : 100004, "orderid" : "pythongood", "itemname" : "사과", "count" : 2},
{"ordernumber" : 100005, "orderid" : "testid", "itemname" : "바나나", "count" : 7},
{"ordernumber" : 100006, "orderid" : "qwer1234", "itemname" : "사과", "count" : 2},
{"ordernumber" : 100007, "orderid" : "testid", "itemname" : "사과", "count" : 3}
];
let cancelList = [
{"cancelnumber" : 100003 },
{"cancelnumber" : 100002 },
{"cancelnumber" : 100005 }
];
let rs = [];
for(let i = 0; i < itemList.length; i++){
let temp = {};
let count = 0;
let total = 0;
for(let j = 0; j < cancelList.length; j++){
for(let k = 0; k < orderList.length; k++){
if(itemList[i]["itemname"] == orderList[k]["itemname"]){
if(cancelList[j]["cancelnumber"] == orderList[k]["ordernumber"]){
count += orderList[k]["count"];
}
}
}
}
if(count > 0){
temp["itemname"] = itemList[i]["itemname"];
temp["total"] = count * itemList[i]["price"];
rs.push(temp);
}
}
for(let i = 0; i < rs.length; i++){
document.write(JSON.stringify(rs[i]) + "<br>");
}
</script>
'코딩 > 2023 JavaScript Console' 카테고리의 다른 글
2023.08.20 / Step 10 [함수] - 코딩 32 일차 (0) | 2023.08.20 |
---|---|
2023.08.19 / Step 10 [함수] - 코딩 31 일차 (0) | 2023.08.19 |
2023.08.17 / Step 9 [문자열] - 코딩 29 일차 (0) | 2023.08.17 |
2023.08.16 / Step 9 [문자열] - 코딩 28 일차 (0) | 2023.08.16 |
2023.08.15 / Step 9 [문자열] - 코딩 27 일차 (0) | 2023.08.15 |