1주차 숙제

tiinto·2022년 5월 22일
0

Sparta

목록 보기
9/11

앱개발 종합반 1주차


문제 1

다음의 리스트에서 딸기의 개수는 몇개인가?
['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']


#제출 답안

let fruit_list = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']

fruit_list.map((value, i) => {
    let count = 0;
    if (value =="딸기")
        count +=1;
})
        console.log(count)

▶ 2

삐빅... 우연히 답은 맞았으나 틀렸다.


#정답

let fruit_list = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']

let count = 0;
fruit_list.map((k)=>{
    if(k == "딸기") count += 1
})
console.log(count)
▶ 2
  • let count = 0; 을 map 함수 앞에 썼어야 함.
    내가 쓴 답대로면 map 함수 돌 때 마다 다시 count가 0으로 돌아가겠지?
  • 값은 꼭 value라고 이름을 할당 안해도 됨
  • 순서에 해당하는 i는 굳이 할당할 필요도 없었지

문제 2

이메일 검사함수 만들기

1) indexOf 함수 이용하기

#제출답안

function checkEmail(email){

if(email.indexOf('@')==-1){
    console.log("이메일이 아닙니다.")
}else{
    console.log("이메일이 맞습니다.")
}
}

checkEmail('cocomong@gmail.com')
▶ 이메일이 맞습니다.
checkEmail('cocomong#gmail.com')
▶ 이메일이 아닙니다.

오 성공적이다.


#정답

function checkEmail(email){
    if(email.indexOf('@') < 0){
        console.log("이메일이 아닙니다");
    }else{
        console.log("이메일이 맞습니다");
    }
}

특정 문자를 찾을 때는 indexOf 함수를 쓴다.
해당하는 값이 있으면 해당 문자의 개수가 표시된다.
반면 해당하는 값이 없으면 -1로 표시되는데
이를 <0 으로 표현할 수 있다.

2) 이메일 정규표현식 이용하기

#제출답안1

구글링해서 나오는 코드 그대로 사용

function email_check(email) {

	var reg = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

	return reg.test(email);

}

email_check("cocomong@gmail.com")
▶ true
email_check("cocomong#gmail.com")
▶ false

#제출답안2

원하는 답변이 나오도록 구글링해서 나오는 정규식을 수정

function isEmail (strEmail){

    var regExp = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    if (strEmail.length > 0 && strEmail.search(regExp) == -1){
        console.log("이메일이 아닙니다.")
    }else {
        console.log("이메일이 맞습니다.")
    }
}

isEmail("cocomong@gmail.com")
▶ 이메일이 맞습니다.
isEmail("cocomong#gmail.com")
▶ 이메일이 아닙니다.

#정답1

@ 가 이메일에 있는지 없는지를 판별하면서,
동시에 @ 기준으로 앞뒤에 특수문자가 들어가면 이메일이 아님을 알려주는 간단 정규표현식(ex. gunhee2#1@gmail)

function checkEmail(email){
    
    var emailRule = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
    if(!emailRule.test(email)){
        console.log("이메일이 아닙니다");
    }else{
        console.log("이메일이 맞습니다");
    }

}

checkEmail("gunhee21@gmail.com");
▶ 이메일이 맞습니다.
checkEmail("gunhee21#gmail.com");
▶ 이메일이 아닙니다.

#정답2

gunhee@gmail 처럼 도메인 뒤에 .com 이 없는 경우를 판별할 수 있는 정규표현식


//도메인에 .com이 없는 경우까지 판별
function email_check( email ) {    
    var regex=/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    return (email != '' && email != 'undefined' && regex.test(email)); 
}

console.log(email_check('gunhee21@gmail'))
▶ false


KPT

  • (P) 정규표현식을 찾아서 쓰는데 어려움이 있었지만
    (K) 포기하지 않고 검색해서 스스로 해결했다.
    (T) 계속 이렇게 꾸준히 해나가자!
  • (K) 1주차 권장 진도 학습 완료!
    (T) 2주차도 잘해보자^_^.... 당장 또 내일부터 시작이군!!!

0개의 댓글