문제 1) 배열의 기능주어진 fruits 배열에서 마지막 요소를 꺼내 newFruits에 넣어주세요.
주의 사항
- length를 이용해서 문제를 풀어야 합니다.
- push를 이용해서 문제를 풀어야 합니다.
- 마지막 요소를 꺼낼 때 length를 사용하는 이유는 무엇일까요.
예상결과console.log(newFruits) // ["파인애플"]
답안let fruits = ["사과", "바나나", "파인애플"] let newFruits = [] newFruits.push(fruits[fruits.length-1]) newFruits;
문제 2) 배열의 기능주어진 fruits 배열의 모든 요소에 "맛있는" 이라는 문자열을 추가하세요.
주의 사항
배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.
예상결과배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.
답안let fruits = ["사과", "바나나"] //let apple = "맛있는 " + fruits[0]; //apple; //let banana = "맛있는 " + fruits[1]; //banana; fruits[0] = "맛있는 " + fruits[0]; fruits[1] = "맛있는 " + fruits[1];
문제 3) 객체의 키&값 추가student와 school 두 개의 객체가 있습니다.
student 객체에 school이라는 객체를 할당해야 합니다.
주의 사항
배열의 index와 변수의 재할당을 사용해서 문제를 풀어주세요.
예상결과console.log(student) // { // name: '철수', // age: 8, // school: { // name: '다람쥐초등학교', // teacher: '다람이' // } // }
답안const student = { name: "철수", age: 8, }; const school = { name: "다람쥐초등학교", teacher: "다람이", } student.school = school; student[school] = school //'[object object]' .. 문자열로서 가져오게 됨.
문제 4) 객체의 키&값 삭제주어진 student는 "철수"에 대한 정보를 모아둔 객체입니다.
그런데 철수와 관련이 없는 drink라는 키가 있네요.
student에서 { drink: "사이다" }를 삭제해주세요
주의 사항
- 객체에서 키&값을 삭제하는 명령어는 무엇일까요?
- 실무에서는 delete사용안함. 원본이 삭제됨.
예상결과console.log(student) // { name : "철수", age: 8 }
답안let student = { name: "철수", age: 8, drink: "사이다" }; delete student.drink student;
문제 5) 연산자 연습각각의 연산 결과가 무엇인지 알아보세요.
주의 사항
- NaN은 Not-A-Number의 약자입니다.
- 연산자는 숫자에서만 정의되므로 모두 숫자로 반환합니다.
- Javascript에서 + 연산자는 "더하기" 와 "연결"의 의미를 갖고 있습니다.
예상결과
답안1 + "1" // 11 1 - "1" //0 "1" + "1" //11 1 * "1" //1 3 * "A" //NaN 1 + 1 + '1' //21 '1' + 1 + 1 //111 "11" - 1 //10 "11" + 1 //111 "홍" + "길동" //홍길동 20 === "20" //flase 20 == "20" //true !true //false
문제 6) 홀짝
입력되는 숫자가 짝수인지 홀수인지 구별하는 함수를 만들려고 합니다.
입력된 값이 "짝수"이면 "Even", "홀수"이면 "Odd", 0이면 "Zero"라는 문구를 띄워주세요.
입력 인자
- num은 0 이상인 자연수
주의 사항
- if는 함수 안에서 사용됩니다.
- console.log("Even")으로 입력하면 "Even"이라는 값이 출력됩니다.
예상결과evenOdd(12) // "Even" evenOdd(15) // "Odd" evenOdd(0) // "Zero"
답안function evenOdd(num) { if (num === 0) { console.log("Zero"); } else if (num%2 === 1) { console.log("Odd"); } else{ console.log("Even"); } } function evenOdd(num) { if (!num) { console.log("Zero"); } else if (num % 2) { console.log("Odd"); } else if(!(num % 2)){ console.log("Even"); } }
문제 7) 몇 일
입력되는 달(month)에 따라 각 달에 몇 일이 있는지 보여주는 함수를 만들려고 합니다.
각 조건에 해당하는 알맞은 값을 입력해주세요.
입력 인자
- month는 1~12의 숫자
주의 사항
- | 연산자가 필요합니다.
- 2월은 28일로 계산합니다.
예상결과days(1) // 31 days(2) // 28 days(4) // 30
답안function days(month) { if (month === 2) { console.log("28"); } else if ( month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { console.log("31") } else { console.log("30") } }
문제 8) 특정문자열 세기
문자열에서 "a"가 몇 번 등장하는지 횟수를 구하는 함수를 만들려고 합니다.
반복문을 이용해 "a"의 등장 횟수를 변수 "count"에 할당하세요.
입력 인자
- str은 문자열입니다.
주의 사항
- for을 이용해서 문제를 풀어야 합니다.
- 문자열도 배열입니다.
예상결과countLetter("I am from Korea") // 2 countLetter("A day without laughter is a day wasted.") // 6
답안function countLetter(str) { let count = 0; for (let i=0; i<str.length;i++) { // console.log(i,str[i]) if(str[i] === "a" || str[i] === "A"){ count++; } }return count; } //더쉬운 방법 function countLetter(str) { let count = 0; str = str.toLowerCase() for (let i=0; i<str.length;i++) { // console.log(i,str[i]) if(str[i] === "a"){ count++; } }return count; }
문제 9) 문자열 삽입
num을 입력받아 1부터 num까지 각각의 숫자 사이에 "-"가 들어간 문자열을 만들어야 합니다.
num에 3일 경우에는 "1-2-3"입니다.
입력 인자
- num은 숫자열입니다.
주의 사항
- for을 이용해서 문제를 풀어야 합니다.
예상결과makeNumber(5) // 1-2-3-4-5 makeNumber(7) // 1-2-3-4-5-6-7
답안function makeNumber(num) { let answer = ""; //정답을 담을 변수 for (let i=1; i<=num; i++) { if(i !== 1){ //만약 가장먼저 가져오는 값이 1이 아닐때만 하이픈을 붙여줄것 answer += "-" } // if(i !== num){ //마지막 // answer += "-" // } answer += i //주의! 자스에서 "문자열" + 1는 = "문자열1" 합산이 아님 console.log(answer) }return }문제 10) 홀수 문자열
num을 입력받아 1부터 num까지의 숫자 중 홀수로 구성된 문자열을 만들어야 합니다.
num에 5일 경우에는 "135"입니다.
입력 인자
- num은 숫자열입니다.
주의 사항
- for을 이용해서 문제를 풀어야 합니다.
- 짝수를 제외하는 조건을 추가해야 합니다.
예상결과makeOdd(5) // 135 makeOdd(7) // 1357
답안function makeOdd(num) { let answer = ""; for (let i = 1; i<=num; i++) { if(i % 2){ //truthy 니까 ===1 생략가능 console.log(i) answer += i } } console.log(answer); }
- count += i
i라는 값을 count에 넣는다.
문제 11) 가장 큰 수 찾기
str은 무작위 숫자인 문자열입니다. 해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.
만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.
입력 인자
- str은 문자열입니다.
주의 사항
- str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
- 비교할 수 있는 기준값이 있어야 합니다.
- 최댓값을 저장할 수 있는 변수가 있어야 합니다.
예상결과bigNum(12345) // 5 bigNum(87135) // 8
답안function bigNum(str) { let biggest = str[0] //제일 큰수만 저장할 것임. for (let i=1; i<str.length; i++) { if(Number(str[i]) > biggest){ //기존의 큰 값보다 더 큰 값이 존재하는 경우 //기존의 큰 값에 새로운 큰 값을 담아준다. // console.log(i, str[i],biggest) biggest = Number(str[i]) } } return biggest; }
문제 12) 마이페이지
등급표
"0~2" ⇒ Bronze
"3~4" ⇒ Silver
5이상 ⇒ Gold
입력 인자
주의 사항
- 반복문을 통해 문제를 풀어야 합니다.
- myShopping 내용을 직접 수정하면 안 됩니다.
- 예상 결과에 나온 문구와 형식이 같아야 합니다.
예상결과의류를 구매한 횟수는 총 5회 금액은 57000원이며 등급은 Gold입니다.
답안const myShopping = [ { category: "과일", price: 12000 }, { category: "의류", price:10000 }, { category: "의류", price: 20000 }, { category: "장난감", price: 9000 }, { category: "과일", price: 5000 }, { category: "의류", price: 10000 }, { category: "과일", price: 8000 }, { category: "의류", price: 7000 }, { category: "장난감", price: 5000 }, { category: "의류", price: 10000 }, ] let count = 0; //횟수 let amount = 0; //금액 let grade = "Bronze"; //등급 - 브론즈가 기본값 for(let i=0; i<myShopping.length; i++){ if(myShopping[i].category === "의류"){ count++; amount += myShopping[i].price //총금액 //amount = amount + myShopping[i].price // console.log(i,myShopping[i]) } } if(count >= 5){ grade = "Gold" }else if(count >=3 ){ grade = "Silver" } //console.log(count); //의류는 총 5개 //console.log(amount); console.log(`의류를 구매한 횟수는 총 ${count}회 금액은 ${amount}원이며 등급은 ${grade}입니다`)
forEach
// const str = 'abcde' // for(let key in str){ // console.log(key, str[key]) // } const arr = [1,2,3,4] // for(let i=0; i<arr.length; i++){ // console.log(arr[i]) // } // for(let key of str){ // console.log(str) // } arr.forEach(function(el){ console.log(el); }) //1,2,3,4 arr.forEach( (el,i) => { console.log(el,i); })// 1,2,3,4 //0,1,2,3
- 함수의 인자 값으로 함수를 전달한다.(고차함수)
while
while문은 보통 for문을 이용했을 때 몇번 반복했는지 모를 때 사용한다. 만번을 돌려도 나오지 않는 결과를, 결과가 나올 때까지 무한 실행할려고 할 때 사용한다. // let count = 0; // while(count !== 10){ // count ++ // // count = count + 1. //count += i // console.log(count); // }
콘솔과 리턴의 차이점
콘솔로그는 함수안에서 여러개가 사용이 된다.
리턴은 함수 안에서 딱 한번만 사용이 된다.
리턴은 함수 종료시 사용이 된다.
알고리즘시 리턴쓰는 습관을 기르자!