220111 TIL 2일차

25tutmmu·2022년 1월 11일

알고리즘 수업

-뒤의 4자리를 "*"로 바꿔서 리턴해주세요.

// ex)핸드폰 번호가 담긴 문자열 phone이 주어질 때,
// 뒤의 4자리를 "*"로 바꿔서 리턴해주세요.

function solution(phone) {
  let arr = phone.split('') 
  return arr.fill("*",3).join('')
  
}

console.log("결과", solution('01012345678')); // "010********"

split() :문자열을 배열로 바꿔준다.

phone.split('')
[ '0', '1', '0', '1', '2', '3', '4', '5', '6', '7', '8' ]

fill(,3) : 3번인덱스부터 끝까지 로 채운다.

[ '0', '1', '0', '*', '*', '*', '*', '*', '*', '*', '*' ]

join('') : 배열을 문자열로 바꿔준다.

"010********"

entries() : [key,value] 쌍의 배열을 반환

const score = {
  easy: 234,
  normal: 759,
  hard: 677,
  nightmare: 46
};

const arr = Object.entries(score);
console.log(arr);
// [
//   [ 'easy', 234 ],
//   [ 'normal', 759 ],
//   [ 'hard', 677 ],
//   [ 'nightmare', 46 ]
// ]

-'조'로 시작하는 학생의 인덱스 찾기

findIndex() = 값이 있으면 인덱스를 반환
startswith() = 문자열이 검색 문자열로 시작하면 true 또는 false. 반환한다.

 const arr = ['김세준', '백선호', '조아라', '홍재훈'];

function callBackFn(element) {
  if(element.startswith('조')) {
      return element
  }
  
 }

 const result = arr.findIndex(callBackFn);

 console.log('결과', result); // 2

-배열의 모든 요소에 '맛있는'을 넣기

foreach() : Array 객체에서만 사용가능한 매소드
foreach는 callback함수와 함께 자주 쓰이며 반복 가능

let fruits = ["사과", "바나나"]

fruits.forEach(function (item, index, array) {
	array[index] = "맛있는" + item;
})

console.log(fruits)

- 데이터 추가

push() : 배열 맨 뒤에 데이터 추가텍스트
unshift() : 배열 맨 앞에 데이터 추가

-데이터 삭제

pop() : 배열 맨 뒤의 데이터 삭제
shift() : 배열 맨 앞의 데이터 삭제

-데이터 조회

indexOf() : 데이터의 index값 반환
includes() : 데이터의 존재 여부 반환 -> true/false

더 많은 배열 매소드 보기 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array

백엔드 강의

Template Literal

console.log("철수는 사과를 " + apple + '개, '+ '바나나를 ' + banana + "개 가지고 있습니다.")
//철수는 사과를 3개, 바나나를 2개 가지고 있습니다.
console.log(`철수는 사과를 ${apple}개, 바나나를 ${banana}개 가지고 있습니다.`)
//철수는 사과를 3개, 바나나를 2개 가지고 있습니다.

`백틱을 이용해 감싸주면 +를 쓰지않고 편하게 ${}을 이용해 변수를 받아올 수 있다.
또 백틱이용시에는 줄바꿈도 가능하다.
이런 식으로 사용가능하다. ex)

date함수

function getCreatedAt() {
    const aaa = new Date()
    const yyyy = aaa.getFullYear()
    const mm = aaa.getMonth() + 1
    const dd = aaa.getDate()

    return `${yyyy}-${mm}-${dd}`
}

yarn

{
  "name": "02-06-welcomtemplate-creat-user-api",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "type": "module",
  "scripts": {
    "dev" : "node index.js"
  }
}
yarn init
yarn dev

이메일이 정상이면 가입환영 템플릿 전송하기

// 1. email이 정상인지 확인 2가지 이상 @포함여부 ,이메일 존재하는지
// 2. 이메일이 정상이니까 가입환영 템플릿을 만들기
// 3. 이메일에 가입 환영 템플릿 전송 <-콘솔로
// 4. 파사드 패턴 활용하기

index.js

import{checkValidationEmail, createTemplate, sendTemplate } from './email.js'

function createUser(user) {
    const isValid = checkValidationEmail(user.email)
    
    if (isValid === true) {
        const template = createTemplate(user)
        const send = sendTemplate(template)
        return send
    }
}

const myuser = {
    name: '철수',
    age: 8,
    school: "다람쥐초등학교",
    email: "a@com"
}
createUser(myuser)

email.js

import{ getCreatedAt } from './utils.js'

export function checkValidationEmail(email) {
    if(email !==undefined || "") {
        if(email.includes("@")=== false){
            console.log("에러!! 올바른 이메일 형식이 아닙니다.")
            return false
        } else {
            return true
        }
    }else{
        console.log("이메일이 존재하지 않습니다.")
        return false
    }
}

export function createTemplate({name, age, school, email}) {
    const createdAt = getCreatedAt()
    return `
        <html>
            <body>
                <h1>${name}님 가입을 환영합니다!!</h1>
                <hr />
                <div>이름: ${name}</div>
                <div>이메일: ${email}</div>
                <div>나이: ${age}살</div>
                <div>학교: ${school}</div>
                <div>가입일: ${createdAt}</div>
            </body> 
        </html>`
}

export function sendTemplate(template) {
    console.log(`${template}을 전송을 완료하였습니다.`)
}

utils.js

export function getCreatedAt() {
    const aaa = new Date()
    const yyyy = aaa.getFullYear()
    const mm = aaa.getMonth() + 1
    const dd = aaa.getDate()

    return `${yyyy}-${mm}-${dd}`
}

0개의 댓글