가수면
Javascript 기본 복습 본문
이번주 작성한 TIL을 읽어보며 휘발되었었던 개념들과 휘발될 것 같은 개념, 각 챕터의 문제들을 다시 풀어봤을 때 안 풀렸던 문제들을 정리해보고자 한다.
이론
&&(논리곱)
둘 중 하나라도 false라면 false 반환.
그렇기에 프로그램은 양쪽 모두 확인하게 됨
왼쪽이 true면 오른쪽을 뱉음
왼쪽이 false면 왼쪽 을 뱉음
||(논리합)
둘 중 하나라도 true라면 true를 반환.
그렇기에 앞에 것이 true라면 뒤에 걸 확인하지 않음.
왼쪽이 있다면 왼쪽을 뱉고, 왼쪽이 없다면 오른쪽을 뱉음
for in vs for of
for in => 숫자
for of => 요소
for in
좀 더 구체적인 예시
const todos = ['우유 구매', '업무 메일 확인하기', '필라테스 수업']
for (const i in todos) {
console.log(`${i}번째 할 일: ${todos[i]}`)
}
0번째 할 일: 우유 구매
1번째 할 일: 업무 메일 확인하기
2번째 할 일: 필라테스 수업
for
for (let i = 0; i < array.length; i++)
빨간 부분이 몇번째 순서까지라기 보단 횟수 자체임.(반복문 내부를 array.length번 반복.)
이 잘못된 지식 때문에 피라미드를 다시 풀긴 했지만, 이해를 바탕으로 코드를 썼다기 보단 기억을 바탕으로 외워진 걸 쓴 느낌이었음.
- continue 문 -
해당 명령문을 중단하고 다음 단계부터 실행
for (let i = 0; i < 5; i++) {
if (i === 2) continue;
console.log(i);
}
// Print: 0
// 1
// 3
// 4
.push
배열에 값을 넣고 더해진 최종 배열의 수
const a = [1, 2, 3, 4]
consol.log(a.push(6))
5
#a = [1, 2, 3, 4, 6]
나머지 매개변수
배열로 바꿔줌
# b = 매개변수
const a = function (...b) {
console.log(b)
}
a(1)
#[1]
a(1, 2)
# [1, 2]
전개 연산자
함수를 호출 (배열을 벗겨줌)
const 함수 = function (a, b, c) {
console.log(a, b, c)
}
const a = [1, 2, 3]
함수(...a)
# 1, 2, 3
.forEach()
가장 기본적인 콜백 함수. 배열 내부의 요소를 사용해 콜백 함수를 호출
const numbers = [273, 52, 103, 32, 57]
# array는 잘 쓰이지 않음
numbers.forEach(function (value, index, array) {
console.log(`${index}번째 요소 : ${value}`)
})
.filter()
리턴 값이 true인 것들만 모아서 새로운 배열을 만드는 함수
# const는 재할당이 안돼서 오류남
let 배열 = [273, 52, 103, 32, 57]
배열 = 배열.filter(function (value, index) {
return value % 2 === 0
})
console.log(배열)
[52, 32]
.map()
리턴한 값을 기반으로 새로운 배열을 만드는 함수
let 배열 = [273, 52, 103, 32, 57]
배열 = 배열.map(function (value, index) {
return value + '!!'
})
console.log(배열)
['273!!', '52!!', '103!!', '32!!', '57!!']
화살표 함수
- 기본형
let 배열 = [273, 52, 103, 32, 57]
배열 = 배열.filter(function (value, index) {
return value % 2 === 0
})
- 화살표 함수 적용 (빨간 부분 날림, 초록색 추가)
let 배열 = [273, 52, 103, 32, 57]
배열 = 배열.filter((value, index) => {
return value % 2 === 0
})
- 더 줄이기 (내부에 있는 코드가 return하는 코드 하나라면 중괄호와 return 생략가능)
let 배열 = [273, 52, 103, 32, 57]
배열 = 배열.filter((value, index) => value % 2 === 0)
문제
1. 계절 구분하기 (조건문)
내가 적은 코드
const a = Number(prompt('월을 입력해주세요.', ''))
if ( a === 3, 4, 5) {
alert ('봄입니다.')
} else if (a === 6, 7, 8) {
alert ('여름입니다.')
} else if (a === 9, 10, 11) {
alert ('가을입니다.')
} else {
alert ('겨울입니다.')
}
작동되는 코드
const a = Number(prompt('월을 입력해주세요.', ''))
if ( 3 <= a && a <= 5) {
alert ('봄입니다.')
} else if ( 6 <= a && a <= 8) {
alert ('여름입니다.')
} else if ( 9 <= a && a <= 11) {
alert ('가을입니다.')
} else {
alert ('겨울입니다.')
}
아쉬운 점
내가 적은 코드에서 숫자 부분을 배열로도 만들어보고 했었는데 범위를 설정할 생각을 미처 못 했었다.
시간을 더 들였다면 어떻게든 접근 방식을 바꿔가며 정답을 찾아갔을 거 같지만, 막혔을 때 그 방식의 변형 말고도 좀 더 생각을 유연하게 가져가야 할 필요가 있다.
2. 최댓값 구하기
console.log(max([1, 2, 3, 4]))찍었을 때 최댓값인 4가 출력이 되도록 만들기
const max = function (array) {
let output = array[0]
for (const a of array) {
if (output < a) {
output = a
}
}
return output
}
console.log(max([1, 2, 3, 4]))
부족했던 점
함수의 매개변수에 뭐를 적어야할지 모르겠었음. 함수 대한 기본이 아직도 부족하다는 것을 느낌
for of 문 쓸 때 const를 빠뜨림.
return 빠뜨림.