Replit 풀면서 어려웠던 문제들을 다시 해석하면서 다시 다뤄보자
남들에게 술술 알려 줄 정도로 😇
let count = 1;
for (let i = 0; i < 6; i++) {
count = count + 1;
console.log(count); // 2,3,4,5,6,7
}
console.log(count); // 7
for
문의 종료 조건(끝 값)을 i <= 5
에서 i < 6
으로 변경하였습니다.<=
와 5
를 수정해서 직접 확인해보세요.for
문이 끝나기 때문에,i
가 0, 1, 2, 3, 4, 5일때만 실행하여 결국 for
문을 반복하는 횟수는 똑같습니다.findSmallestElement
함수를 구현해 주세요.findSmallestElement
의 arr
인자는 숫자 값으로만 이루어진 배열입니다.arr
의 값들 중 가장 작은 값을 리턴 해주세요.arr
가 비어있으면 0
을 리턴 해주세요.인자(input)
으로 들어왔다면 1이 리턴 되어야 합니다.[20, 200, 23, 1, 3, 9]
const arr = [20, 200, 23, 1, 3, 9];
function findSmallestElement(arr) {
if (arr.length === 0) {
return 0;
} else {
let min = arr[0];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
}
console.log(findSmallestElement(arr));
findSmallestElement arr를 가져와라.
만약에 arr.length가 0과 같으면 0을 반환해라.
그렇지 않으면 min의 값은 arr[0]
arr의 첫번째 인덱스값인데,
i는 0으로 초기화시켜, i의 값이 arr의 길이보다 작아? 맞으면 밑에 문장으로 내려가,
만약 arr[i]
가 arr[0]
첫번째값보다 작으면 min 값을 재할당해 arr[i]
로
반복해서 비교가 끝나면 min값을 반환시켜줘.
let cities = [];
cities.push("경주", "전주");
cities.unshift("인천");
console.log(cities); //["인천","경주","전주"]
push()
, unshift()
메소드는 배열에 요소를 추가해주는 함수이다.
둘의 차이는 요소들이 배열에 추가되는 위치가 다르다는 것 입니다.
push
는 배열의 마지막 부분, 즉 꼬리에 요소들을 추가하고,
unshift
는 배열의 맨 앞부분, 즉 머리 부분에 요소를 추가합니다.
console.log
로 cities
배열이 어떻게 나오는지 확인하고 넘어가주세요.
divideArrayInHalf
함수는 array
를 인자로 받습니다.array
는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.divideArrayInHalf
함수는 인자로 들어온 array
로 부터result
을 리턴합니다.array
요소들 중 10과 같거나 작은 값의 요소들은 result
의 맨 앞으로, 10보다 큰 값의 요소들은 result
의 맨 뒤로 재구성된 배열을 리턴 해주세요.array
의 맨 뒤 요소부터 맨 앞 요소까지 입니다. function divideArrayInHalf(array){
let result = [];
for(let i = array.length; i >= 0; i--){
if (array[i]<=10){
result.unshift(array[i])
}else if(array[i] > 10){
result.push(array[i])
}
}
return result;
}
console.log(divideArrayInHalf([1, 20, 10, 5, 100]));
// [ 1 , 10 , 5 , 100 , 20 ]
divideArrayInHalf array
를 가져와라.
result
의 빈배열을 만들어준다.
i
는 배열의 길이와 같다고 초기값을 만들어준다. i
는 0보다 크거나 작아? 그럼 밑에 문장으로 내려가자
만약 array
의 마지막 배열 100이 10보다 작거나 크니? 아니?
그럼 else if 문장으로 내려가 array[5]
가 10보다 크니? 맞으면
빈배열에 array[5]=100
을 마지막배열에 집어넣어.
그리고 반복시키고 반복이 끝나면 result 값을 반환해.
💁♀️ 내가 궁금했던 점 💁♀️
Q : 왜 출력값이 순서대로 배열이 되지 않았을까?
A : 애초에 배열을 가져오는 순서가 뒤죽박죽이라 가져오는 순서대로 push,unshift 해줘서 그런것.
llet rightNow = new Date();
let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1;
let date = rightNow.getDate();
console.log(rightNow); // Mon Mar 22 2021 15:51:36 GMT + 0900 (대한민국 표준시)
console.log(year) // 2021년
console.log(month) // 3
console.log(date) // 22
getMonth
메서드는, 현재 달보다 1 작은 값을 반환 하므로 주의해주세요.
let month = rightNow.getMonth(); // 2
birthday
라는 인자를 받습니다.birthday
는 Date
객체 입니다. birthday
라는 인자를 넣었을 때, 현재를 기준으로 만으로 계산한 나이를 리턴 해주세요.birthday
는 string이 아닌 Date
객체라는 걸 명심하세요 :)function getWesternAge(birthday) {
let birth = new Date(birthday);
let rightNow = new Date();
let age = rightNow.getFullYear() - birth.getFullYear();
let birthMonth = birth.getMonth();
let thisMonth = rightNow.getMonth();
let birthDate = birth.getDate();
let thisDate = rightNow.getDate();
if (birthMonth < thisMonth) {
return age;
} else if (birthMonth > thisMonth) {
return age -1;
} else {
if (birthDate < thisDate) {
return age;
} else {
return age -1;
}
}
}
console.log(getWesternAge(1996,10,01));
getWesternAge(birthday) 함수를 실행시키고
날짜,년도,월,일 각각 생일과 현재날짜를 가져온다.
age
는 현재날짜에서 해당년도(2021) - 생일년도(1996)를 가져온다.
만약 현재 월이 더 크면 25살을 반환하고
아니면 현재 월이 더 작으면 24을 반환해라
그것도 아니라면 (동일하다면) 만약 현재 일이 더 크면 25살을 반환하고,
그게 아니라면 24살을 반환해라.
객체는 중괄호{}
로 감싸져있다.
콜론으로 구분되어있고 키 : value(값)으로 선언되있는 프로퍼티로 구성되어있다.
:
(콜론)으로 구분한다.,
(쉼표)를 붙여준다..
) 연산자를 사용[]
)를 사용. 프로퍼티 명은 쌍따옴표(""
)와 함께 대괄호 안에 작성합니다.대괄호[]
안에는 변수가 들어갈 수 있음.
sumAmount
: 총 판매량sumReview
: 총 리뷰개수sumLike
: 총 좋아요수function getData(salesArr,reviewArr,likeArr){
sumAmount = 0;
sumReview = 0;
sumLike = 0;
for(let i = 0; i < salesArr.length; i++) {
sumAmount += salesArr[i][1];
}
for(let i = 0; i < reviewArr.length; i++) {
sumReview += reviewArr[i][1];
}
for(let i = 0; i < likeArr.length; i++) {
sumLike += likeArr[i][1];
}
let objData = {
sumAmount: sumAmount,
sumReview: sumReview,
sumLike: sumLike,
};
return objData;
}
getData 함수에는 salesArr,reviewArr,likeArr의 값을 가져온다.
총 판매량,총 리뷰개수,총 좋아요수의 변수를 만들어준다.
그리고 개별적으로 반복시켜준다.
총판매량 반복문 : i는 0으로 초기화; i가 salesArr.length보다 작니? 그럼 다음문장으로 넘어가
const salesArr = [
["20190401", 34],
["20190402", 23],
["20190403", 29]
];
const reviewArr = [
["20190328", 3],
["20190401", 0],
["20190403", 1]
];
const likeArr = [
["20190328", 98],
["20190401", 102],
["20190403", 125]
];
이렇게 코드가 있다고 가정했을때,
sumAmount += salesArr[i][1]
는
현재 i가 0이니까 0번째 인덱스안에있는 1번째 인덱스값을 가져오면 34가 된다.
그리고 계속 반복하면서 sumAmount값에 더해준다.
총판매량,총리뷰수,총좋아요수 모두 같은 방법으로 계산해준다.
그리고 objData라는 객체 데이터에 값을 넣어주고 objData값을 반환시킨다.