본문 바로가기

WEB/JavaScript

Js - 내장 함수 1

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>자바스크립트 내장함수</title>
</head>
<body>
    <h1>자바스크립트 내장객체</h1>
    <h2>개요</h2>
    <p>자바스크립트에서 기본적으로 제공하는 객체에 포함된
        여러가지 함수들에 대해 알아봄</p>
    <p>자바스크립트의 내장객체는 크게 3가지로 분류:
        native 객체, host 객체, 사용자정의 객체</p>

    <h2>Native 객체</h2>
    <p>ECMAscript 규격에 따라 정의된 객체</p>
    <p>Object, String, Number, Function, Array,
        Date, Math, RegExp 등이 제공됨</p>
    <p>이러한 객체는 전역객체(global object) 라고도 불림</p>

    <h2>Fuction</h2>
    <p>함수 정의시 사용</p>
    <script>
        let add = new Function('a', 'b', 'return a+b');

        document.write(add(10,10));
    </script>

    <h2>String</h2>
    <p>문자열을 효율적으로 다룰 수 있게 해줌</p>
    <p>String 객체는 기본적으로 불변immutable(변경불가) 객체임 </p>
    <p>문자열은 기본적으로 문자열 상수풀을 이용해서 관리함 </p>
    <script>
        let str1 = 'Hello, World!!';
        let str2 = new String('Hello, World!!');
        let str3 = 'Hello, World!!';
        let str4 = new String('Hello, World!!');

        document.write(str1,'<br>');
        document.write(str2,'<br>');
        document.write(str1 === str2, ' '); //문자열 ===비교시엔 주소를 비교함
        document.write(str1 === str3, ' '); // 같은 주소
        document.write(str2 === str4, ' '); // string은 주소가 고유

        document.write(                            //문자열은 문자들로 구성된 배열임
                str1[0],' ', str1[1], ' ', str1[2], '<br>');

        //문자열은 불변이므로 개별 문자는 수정불가!
        str1[0] = 'h';
        document.write(str1,' ' );

        str1='h' + str1.slice(1);

        str1b = ['H','e','l','l','o'];
        document.write(str1b,'<br>');

    </script>
<hr>

    <script>
        // length : 문자열 길이 반환
        document.write(str1, ' ', str1.length, '<br>');

        // indexOf(찾는문자열) : 특정 문자열의 존재여부(위치) 확인
        document.write(str1.indexOf('World'),'<br>' );  //7은 존재하는 위치
        document.write(str1.indexOf('java'),'<br>' );  //-1은 없다는 뜻

        // lastIndexOf(찾는문자열) : 마지막에 발견된 문자열의 존재여부(위치) 확인
        str5 = 'Hello, World!! Hello, World!!';
        document.write(str5.lastIndexOf('World'),'<br>' );
        document.write(str5.indexOf('World', 14),'<br>' ); //시작위치 지정가능

        // slice (시작, 끝-1) : 지정한 범위내 문자열 추출
        // str5에서 world만 추출
        document.write(str5.slice(7,12), '<br>');

        // str5에서 !!만 추출
        document.write(str5.slice(27), '<br>');
    </script>

<hr>

    <script>
        //주민번호를 입력하면 성별을 판별하여 출력
        // let jumin = prompt('주민번호');
        // if (jumin.slice(7,8) == 1) {
        //     document.write(`${jumin.slice(7,8)}, 남자 <br> `);
        // } else if (jumin.slice(7,8) == 2) {
        //     document.write(`${jumin.slice(7,8)}, 여자 <br> `);
        // }



        let checkGender = (jumin) => {
            gender = '';

            switch (parseInt(jumin.slice(7, 8))) {
                case 1 : gender = '2000년 이전 남자'; break;
                case 2 : gender = '2000년 이전 여자'; break;
                case 3 : gender = '2000년 이후 남자'; break;
                case 4 : gender = '2000년 이후 여자'; break;
                default : gender = '잘못된 주민번호';
            }
            return gender;
        }

            document.write(checkGender('123456-100000'), '<br>');
            document.write(checkGender('123456-900000'), '<br>');

    </script>





    <hr>
    <script>
        // substring() : slice() 동일하나 양수만 지원(뒤에서부터 찾기 x)
        let jumin = '123456-1234567';

        document.write(jumin.substring(7,8), '<br>');
        document.write(jumin.substring(-1)); // 작동 x

        // substr(시작위치, 추출할 문자길이)
        document.write(jumin.substr(7, 1),'<br>');

        // replace(찾을문자, 대체문자)
        'Hello, World!! Hello, Again!!';
        document.write(str5.replace('Hello', 'Hi' ), '<br>'); //첫째만 바뀜

        document.write(str5.replace(/Hello/g, 'Hi' ), '<br>');
        //찾을 문자열을 정규표현식 형태로 작성하고
        // 찾을 범위를 지정하면 모든 문자를 대상으로 바꿔줌

        str5 = 'Hello, World!! hello, Again!!';
        document.write(str5.replace(/Hello/ig, 'Hi' ), '<br>');
        // 대소문자 상관없이 global로 바꾸려면
        // insenstive 약자 i를 추가지정


        //toUpperCase , toLowerCase : 대소문자 변환
        document.write(str5.toUpperCase(), '<br>');
        document.write(str5.toLowerCase(), '<br>');


        // concat : 문자열 연결해 하나의 문자열로 합침
        let str6 = 'Hello ';
        let str7 = 'World';
        document.write(str6.concat(', ',str7, '<br>'));

        // trim : 앞뒤 공백문자 제거
        let num = '     12345      ';
        document.write(num + 67890,'<br>');
        document.write(num.trim() + 67890,'<br>');

        document.write(Number(num),'<br>');
        document.write(parseInt(num),'<br>');
        // trim을 쓰지 않더라도 자동으로 제거 후 형변환

        // padStart , padEnd : 문자열 앞/뒤 에 지정한 길이만큼 문자 추가
        let age = '5'; // 전체자리 5자리, 나머지 0으로 채움
        document.write(age.padStart(5,0),'<br>' );
        document.write(age.padEnd(5,0),'<br>' );
    </script>


    <script>
   //대학교 학번코드는 입학년도(2자리) + 학과번호(4자리) + 개인번호(6자리)로 구성
   //  입학년도 2022, 학과번호 35, 개인번호 157일때 학번코드 작성
     ip = '2022';
     hak = '35';
     ga = '157';
    document.write(
            ip.slice(2).concat(   hak.padStart(4,0), (ga.padStart(6,0))  ), '<br>' );

    document.write( ip.slice(2,5), hak.padStart(4,0), ga.padStart(6,0),'<br>'  );

    // 년월일시분호를 다음의 형식으로 작성하세요.
   // 2022-06-09 03:39:05
   </script>

<hr>
    <script>
        //chatAt(위치): 지정한 위치에 해당하는 문자 추출
        // 'Hello, World!! hello, Again!!'

        document.write(str5.charAt(0), ' ' ,str5.charAt(7) , '<br>');


        // split(구분문자): 문자열을 구분 문자를 사용해서
        // 각각의 문자열로 분리해서 배열로 반환

        let today = '2022-06-09 15:44:43'

        document.write(today.split(' ') [0], ' / '   );
        document.write(today.split(' ') [1], '<br>'   );



        // 년월일 추출
        let ymd = today.split(' ')[0];
        let date = ymd.split('-');


        document.write( date[0], ' ',
           date[1], ' ', date[2], '<br>' );


        // 시분초 추출
        let si = today.split(' ')[1];
        let ch = si.split(':');

        document.write(ch[0], ' ',
           ch[1], ' ', ch[2] , '<br>');


        // repeat  : 문자열 지정한 횟수만큼 반복 - ES5추가됨
        document.write( str6.repeat(10), '<br>' );

  </script>


        <h2> Number </h2>
        <p>숫자를 다룰때 유용한 함수 제공</p>

    <script>
        //toFixed(소수자리수) : 소수점 이하 출력할 자리수 지정
        num = 3.141592;
        document.write(num.toFixed(2), '<br>')

    </script>


        <h2> Math </h2>
        <p>수학적 상수와 기타 함수제공</p>
    <script>
        // round : 반올림 함수
        document.write(Math.round(num), '<br>');

        // ceil : 무조건 올림 함수
        document.write(Math.ceil(num), '<br>');

        // floor : 무조건 내림 함수
        document.write(Math.floor(num), '<br>');
    </script>

<hr>

    <script>
        // random : 0보다 크고 1보다 작은 실수 값을 하나 생성
        let rnd = Math.random();

        document.write(rnd ,'<br> ');
        document.write('random x 10 => ', parseInt(rnd * 10 ) ,'<br> ');
        document.write('random x 10 => ', parseInt(rnd * 10 ) +1 ,'<br> ');  //0~10까지
        document.write('random x 100 => ', parseInt(rnd * 100 ) ,'<br> ');


        //  1 ~ 45 사이 임의의 정수
        document.write('random x 10 => ', (parseInt(rnd * 100 )-11)/2 +1 ,'<br> ');

        // 특정범위의 임의의 정수 생성 공식
        // floor(random * (max - min + 1)) + min

        // 1~45 사이 임의의 정수 생성
        lotto = Math.floor( Math.random() * (45 - 1 + 1) + 1 );
        document.write(lotto, '<br>');



        // 로또 생성 함수
        let randInt = (mx, mm) => Math.floor( (Math.random() * (mx - mm + 1) ) + mm );

        for (let i = 1; i<=6; ++i )
            document.write(randInt( 1, 45 ) , ' ');

    </script>


<hr>
    <script>
        // 주민번호를 하나 입력받아
        // 올바른 주민번호인지 여부를 출력하는 함수 작성
// 1) 주민번호 앞부터 12자리(지역번호까지)까지 각 자리를 2~9까지 곱한다.
// 2) 계산되어 나온 숫자를 모두 더한다.
// 3) 더한 숫자를 11로 나눈 나머지를 구한다.
// 4) 11에서 나머지를 뺀 값의 마지막 숫자와 13번째 숫자 일치여부 확인

        jumin = '999999-1000002';
        let sum = 0;
        let result = '올바르지 않은 주민번호입니다. ';

        sum +=  parseInt(jumin[0]) * 2;
        sum +=  parseInt(jumin[1]) * 3;
        sum +=  parseInt(jumin[2]) * 4;
        sum +=  parseInt(jumin[3]) * 5;
        sum +=  parseInt(jumin[4]) * 6;
        sum +=  parseInt(jumin[5]) * 7;
        sum +=  parseInt(jumin[7]) * 8;
        sum +=  parseInt(jumin[8]) * 9;
        sum +=  parseInt(jumin[9]) * 2;
        sum +=  parseInt(jumin[10]) * 3;
        sum +=  parseInt(jumin[11]) * 4;
        sum +=  parseInt(jumin[12]) * 5;

        sum = sum % 11

        code = (11 - sum) % 10;



        if (code == parseInt(jumin[13])) {
            result = '올바른 주민번호입니다.';
        }


        document.write(code, ' / ' , jumin[13], ' / ', result);



    </script>
<hr>

    <script>
        sum = 0;
        let w = [2,3,4,5,6,7,  0,  8,9,2,3,4,5];
        //
        // for (let i = 0; i < w.length; ++i )
        //     if (i != 6 )
        //         sum += parseInt(jumin[i]) * w[i];

        for (let [idx, val] of w.entries() ) {
            if (val != 0)
                    sum += parseInt(jumin[idx]) * val;
        }
        //  [idx순번, val값]


        code = (11 - (sum % 11)) % 10;

        if (code == parseInt(jumin[13])) {
            result = '올바른 주민번호';
        }
        document.write(code, ' / ' , jumin[13] )

    </script>
<hr>



    <script>

        let checkJumin = (jumin) => {
            sum = 0;

            let w = [2,3,4,5,6,7,  0,  8,9,2,3,4,5];

            for (let [idx, val] of w.entries() ) {
                if (val != 0)
                    sum += parseInt(jumin[idx]) * val;
            }

            code = (11 - (sum % 11)) % 10;

            return code == parseInt(jumin[13])
        };

        document.write(checkJumin('111111-1111114'), '<br>');
        document.write(checkJumin('111111-1111118'), '<br>');


    </script>




</body>
</html>

'WEB > JavaScript' 카테고리의 다른 글

Js - 예외 처리 (try ~ catch)  (0) 2022.06.10
Js - 내장 함수 2  (0) 2022.06.10
Js - 함수  (0) 2022.06.09
Js - 객체  (0) 2022.06.08
Js - 조건문, 반복문  (0) 2022.06.08