영어는 싫어요 문제
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120894
// 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
function mreplace( replacements, str) {
let result = str;
for( let [x,y] of replacements)
result =result.replace(x,y); //replace 메서드를 사용해서 정규식을 통해 찾은 값 'x'를 'y' 값으로 교체하고 result에 추가한다.
return result;
}
function solution(numbers) {
return parseInt(mreplace([[/one/g, "1"], // 이때 변경된 값이 문자데이터이기 때문에 parseInt를 사용하여 숫자로 변경함!
[/two/g, "2"],
[/three/g, "3"],
[/four/g,"4"],
[/five/g,"5"],
[/six/g,"6"],
[/seven/g,"7"],
[/eight/g,"8"],
[/nine/g,"9"],
[/zero/g,"0"]],numbers));
}
// [/단어/g]
문자열에서 단어를 찾아라. 단, 한번만 찾고 끝내지 말고 문자열 전체를 탐색할것. 플래그 문자 g가 있으면 문자열 전체를 탐색한다는 뜻이다.
relpace(x,y) -> x 값을 y로 변경하는 메서드
row Cards section 구현 완료
사각형으로 이루어진 card로 구성된 row cards section 구현 완료.
row-cards
클래스 내부에 2개의 row-cards__list
div를 만들어서 내부에 헤더와 내용을 추가함커밋 링크:https://github.com/jyc-coder/clone-coding/commit/05de87a23a916cb48f23b8126c613fa13d7d7aad
return
키워드로 함수 안에서 밖으로 데이터를 반환한다.
function hamburger(){
return '햄버거'
}
console.log(hamburger()) // '햄버거'
return
은 함수를 종료시키기 때문에 그 이하 명령은 실행되지 않는다.
function hamburger(){
return '햄버거' //
console.log('감자튀김') // 동작하지 않는다.
}
return
키워드를 사용하지 않거나 반환데이터를 쓰지 않으면, undefined
가 반환된다.
function hamburger(){
}
function cheeseburger(){
return
}
console.log(hamburger()) // undefined
console.log(cheeseburger()) // undefined
기본값
function hamburger(a, b = 'burger') {
return a + b
}
console.log(hamburger('cheese')) // cheeseburger
구조 분해 할당
const user = {
name: 'jyc',
age: 28,
// email: 'jyc4648@gmail.com'
}
function getName({ name }) {
return name
}
function getEmail({ email = '이메일이 없습니다.' }) {
return email
}
// 객체 구조분해 할당으로 user의 name 값과 email 값을 리턴함
console.log(getName(user)) // 'jyc'
console.log(getEmail(user)) // '이메일이 없습니다.'
const fruits = ['Apple', 'Banana', 'Cherry']
const numbers = [1, 2, 3, 4, 5, 6, 7]
function getSecondItem([,b]) {
return b
}
// 배열 구조분해를 통해서 2번째 요소를 리턴해라
console.log(getSecondItem(fruits)) // 'Banana'
console.log(getSecondItem(numbers)) // 2
나머지 매개변수
function sum(...rest) {
console.log(rest) // [1, 2, 3, 4, 5, 6, 7, 8]
return rest.reduce((acc, cur) => acc + cur)
}
// 입력한 숫자들을 전부 배열로 변경해서 reduce 메서드가 호출됨
const res = sum(1, 2, 3, 4, 5, 6, 7, 8)
console.log(res) // 36
arguments 객체
function sum() {
let res = 0
for (const item of arguments) {
res += item
}
return res
}
const res = sum(1, 2, 3, 4, 5, 6, 7, 8)
console.log(res) // 36
엥 나는 arguments 선언 안했는데?
arguments는 함수에 전달된 인수에 해당하는 Array 형태의 객체이다.
화살표 함수는 기본적으로 익명으로 표현식이다.
나름대로 제한점이 존재한다
//함수 표현
const sum = function(a,b){
return a + b
}
// 화살표 함수
const sum = (a,b) => a+b
const a = () => {} // 매개변수가 없을때
const b = x => {} // 매개변수가 1개만있으면 소괄호 제거 가능
const c = (x,y) => {} // 매개변수가 없거나 2개 이사은 소괄호 생략안됨
const d = x => {return x * x} // 중괄호가 있으면 무조건 return문구가 들어있어야함
const e = x = > x*x // 함수가 return 으로 시작된다면 {}, return 생략 가능함
const f = x => { // 함수가 return 부터 시작하지 않으면 중괄호 생략 안됨
console.log(x*x)
return x * x
}
const g = () => {return {a:1}}
const h =() => ({a:1}) // 객체 데이터는 {}기호를 사용하기 때문에 소괄호로 묶어야함
const i = () => {return[1,2,3]}
const j = () => [1,2,3] // 둘다 똑같음
함수 정의와 동시에 바로 실행하는 문법
const a = "치즈버거"
// 함수 정의
const giveMeBurger = () => {
console.log(a)
}
giveMeBurger() // '치즈버거'
// 함수를 정의함과 동시에 바로 실행
(function() {
console.log('치즈버거')
})
// 사용 가능한 패턴
;(() => {})() // (F)()
;(function () {})() // (F)()
;(function () { })() // (F())
;!(function () {})() // !F()
;+(function () {})() // +F()
함수의 인수로 사용되는 함수
ex) addEventListener
const a = (callback) => {
callback()
console.log('A')
}
const b = () => {
console.log('B')
}
a(b) // 여기있는 b가 콜백함수
function sum(a, b, callback) {
// 1초 후 실행
setTimeout(() => {
callback(a + b)
}, 1000)
}
sum(3, 7, function(value) {
console.log(value) // 10
})
//sum이라는 함수의 인수로 다른 함수를 사용했다.
//loadImage
<div class="container">
<h1>Loading...</h1>
</div>
const loadImage = (url, cb) => {
const imgEl = document.createElement('img')
imgEl.src = url
imgEl.addEventListener('load', () => {
setTimeout(() => {
cb(imgEl)
}, 1000)
})
}
const containerEl = document.querySelector('.container')
loadImage('https://www.gstatic.com/webp/gallery/4.jpg', imgEl => {
containerEl.innerHTML = ''
containerEl.append(imgEl)
})
하나의 함수에서 자기 자신을 다시 호출해서 실행하는 방법
const userA = { name: 'A', parent: null }
const userB = { name: 'B', parent: userA }
const userC = { name: 'C', parent: userB }
const userD = { name: 'D', parent: userC }
const getRootUser = user => {
if (user.parent) // parent 값이 있니? {
return getRootUser(user.parent) // 있으면 user.parent값을 인수로 다시 함수를 호출한다.
}
return user
}
console.log(getRootUser(userD)) // userA가 출력된다.
일정한 시간이 지난 후에 원하는 함수를 호출하는 것
const hello = () => {
console.log('Hello~')
}
setInterval(hello,3000) // 3초마다 hello 호출
const btnEl = document.querySelector('h1')
btnEl.addEventListener('click', () => {
console.log('Clear!')
})