#1. 자바스크립트 내장 기능(2)

1. Math

  • 수학적인 속성과 메서드를 가진 내장 객체
  • 객체를 생성하지 않고 클래스 이름으로 직접 접근 할 수 있다. (정적 멤버변수와 정적 메서드)

 

1) max( )

  • Math.max(value) 형태로 사용되며, 주어진 값 중에서 최댓값을 리턴한다. (파라미터 수 제한 없음)
const max = Math.max(231, 12, 99, 35, 290, 132);
console.log(max);  // 290

 

2) min( )

  • max 메서드와 같은 형태로 사용되며, 주어진 값 중에서 최솟값을 리턴한다. (파라미터 수 제한 없음, max와 반대)
const min = Math.min(231, 12, 99, 35, 290, 132);
console.log(min);  // 12

 

3) round( )

  • Math.round(value) 형태로 사용되며, 소수점에서 반올림 / 반내림을 한다.
const num1 = 3.7146;
console.log(Math.round(num1));  //4

 

4) ceil( )

  • Math.ceil(value) 형태로 사용되며, 소수점에 상관없이 무조건 반올림 한다.
const num2 = 5.123;
console.log(Math.ceil(num2));  // 6

 

5) floor( )

  • Math.floor(value) 형태로 사용되며, 소수점에 상관없이 무조건 반내림 한다. (ceil과 반대)
const num3 = 5.821;
console.log(Math.floor(num3));  // 5

 

6) abs( )

  • Math.abs(value) 형태로 사용되며, 절대값을 반환한다.
const num4 = -123;
console.log(Math.abs(num4));  // 123

 

7) random( )

  • Math.random() 형태로 사용되며, 파라미터로 받는 값은 따로 없고, 0~1의 난수를 리턴한다.
console.log(Math.random());  // 0.20599926847426575 <- 이 수는 랜덤으로 나온다
  • 1~10의 정수를 리턴하는 방법
    • random 메서드에 10을 곱하고 +1을 해준다. (+1을 안하면 0~9 사이의 난수)
    • parseInt를 사용하여 정수로 변환해 준다.
console.log(parseInt(Math.random() * 10 + 1));  // 1 ~ 10
  • 두 수 사이의 정수를 리턴하는 방법 (공식처럼 외워두자)
function random(min, max) {
  return parseInt(Math.random() * (max - min +1)) + min;
}
console.log(random(10,15));  // 10 ~ 15
  • 랜덤 함수를 응용해서 5자리 랜덤 숫자 생성
function random(min, max) {
  return parseInt(Math.random() * (max - min +1)) + min;
};

let num = "";
for(let i = 0; i < 5; i++) {
  // 문자열과 숫자의 결합은 문자열이다.
  num += random(0,9);
}
console.log(num);  // 5자리 랜덤 숫자

 

8) pow( )

  • Math.pow(거듭제곱할 숫자, 거듭제곱 횟수) 형태로 사용되며, 특정 숫자의 거듭제곱 값을 계산해주는 함수이다.
console.log(Math.pow(2,3));  // 8
console.log(Math.pow(2,10));  // 1024
console.log(Math.pow(4,9));  // 262144
console.log(Math.pow(7,3));  // 343

let num = 3
console.log(Math.pow(num,2));  // 9

 

9) sqrt( )

  • Math.sqrt(number) 형태로 사용되며, 특정 숫자의 제곱근 값을 계산해주는 함수이다.
console.log(Math.sqrt(4));  // 2
console.log(Math.sqrt(9));  // 3
console.log(Math.sqrt(16));  // 4
console.log(Math.sqrt(25));  // 5
console.log(Math.sqrt(121));  // 11

 

2. Date

  • 객체로 생성하는 순간의 시스템 시각이나 생성자 파라미터로 전달된 시작을 나타낸다.

 

예제들의 기능을 확인하기 위한 배열, 객체 생성

// 요일의 이름을 저장하고 있는 배열
const days = ['일', '월', '화', '수', '목', '금', '토'];

// 현재 시간 객체 생성
const date1 = new Date();

1) getFullYear( )

  • 현재 연도를 반환한다.
const yy = date1.getFullYear();
console.log(yy); // 2022

 

2) getMonth( )

  • 현재을 반환한다.
  • month는 0부터 시작하기 때문에 +1을 해줘야 현재 월이 반환된다.
const mm = date1.getMonth() +1;
console.log(mm);  // 2

 

3) getDate( )

  • 현재 날짜(일)을 반환한다.
const dd = date1.getDate();
console.log(dd);  // 14

 

4) getDay( )

  • 현재 요일을 반환한다.
  • 일요일은 0을 나타내고, 토요일은 6을 나타낸다. (요일을 글자로 나타낼 경우 배열 사용)
const i = date1.getDay();
const day = days[i];
console.log(day);  // 월

 

5) getHours( )

  • 현재 시간을 반환한다.
const hh = date1.getHours();
console.log(hh);  // 23

 

6) getMinutes( )

  • 현재 을 반환한다.
const mi = date1.getMinutes();
console.log(mi);  // 31

 

7) getSeconds( )

  • 현재 를 반환한다.
const ss = date1.getSeconds();
console.log(ss); // 12

 

8) getTime( )

  • 기준 시간으로부터 부터 현재까지 흐른 시간을 밀리세컨드 단위로 환산하여 반환한다.
  • 생성된 객체에 정해진 시간이 없으면 1970년 1월 1일 자정부터 시작한다.
const tt = date1.getTime();
console.log(tt);  // 1644900156714

 

9) 날짜를 의미하는 문자열 반환

  • 문자열로 날짜 부분만 나타낸다.
console.log(date1.toDateString());  // Mon Feb 14 2022
  • 형식 문자열을 사용해서 Date를 나타내는 문자열 생성
console.log(date1.toLocaleString());  // 2/14/2022, 11:48:14 PM

console.log(date1.toLocaleString('ko-KR'));  // 2022. 2. 14. 오후 11:48:14

 

10) 특정 날짜를 의미하는 객체 생성

  • 객체를 생성할 때 파라미터 값에 연/월/일 순서로 넣는다. (시각이 없으므로 자정으로 자동 설정된다.)
  • 월은 0부터 시작 하기 때문에 9를 넣으면 10이 반환된다.
const date2 = new Date(2001, 9, 5);
console.log(date2.toLocaleString('ko-KR'));  // 2001. 10. 5. 오전 12:00:00
  • 시/분/초 까지 값을 넣을 경우
const date3 = new Date(2001, 9, 5, 21, 19, 31);
console.log(date3.toLocaleString('ko-KR'));  // 2001. 10. 5. 오후 9:19:31

 

11) 이미 생성된 날짜 객체의 성분 변경

date3.setYear(2010);
date3.setMonth(1);
date3.setDate(14);
date3.setHours(12);
date3.setMinutes(16);
date3.setSeconds(30);
console.log(date3.toLocaleString('ko-KR'));  // 2010. 2. 14. 오후 12:16:30

 

3. Number

  • 숫자 처리와 관련된 기본 기능 등을 제공하는 내장 클래스
  • Number() 함수를 통해 반환 받는 값은 객체가 아닌 일반 숫자이다.
// 정수 형태의 문자열 입력
const b = Number('123');
console.log(b);  // 123
console.log(typeof b);  // number
console.log(b === 123);  // true


// 실수 형태의 문자열 입력
const c = Number('123.45');
console.log(c);  // 123.45
console.log(typeof c);  // number
console.log(c === 123.45);  // true
  • Number() 함수는 parseFloat(실수변환), parseInt(정수변환)와 비슷한 기능을 한다.
  • 주어진 값이 정수인지 확인하는 방법
console.log(Number.isInteger("123"));  // false
console.log(Number.isInteger(123));  // true

 

4. 정규표현식 (Regex)

  • 문자열이 특정 조건을 충족하는지 검사하거나 특정 패턴의 문자열을 검색, 치환하기 위해 사용한다.
  • 정규표현식은 자바스크립트 뿐만 아니라 다른 언어에서도 사용된다.
*      - 앞의 문자/그룹이 0회 이상 일치
+*     - 이전문자/그룹이 1회 이상 일치하는 경우
?      - 앞의 문자/그룹이 0 또는 1번 일치
.      - 개행 문자를 제외한 모든 단일 문자와 일치
|      - 하나의 패턴 또는 다른 패턴과 일치
[xyz]  - 문자 집합, 임의의 문자와 일치
[x-z]  - 문자 집합, 문자 범위 사이의 모든 문자와 일치
[^xyz] - 반전된 문자 집합, 다른 모든 문자와 일치
{n}    - 앞의 표현식이 n번 나타나는 부분에 대응한다. n은 반드시 양의 정수여야 한다.
{n, m} - 앞 문자가 최소 n개, 최대 m개가 나타나는 부분에 대응. 양의 정수여야 한다.
^      - 문자열의 시작과 일치
$      - 문자열의 끝과 일치
\s     - 공백, 탭, 양식 피드, 줄 바꿈을 포함한 단일 공백 문자와 일치
\S     - 공백이 아닌 단일 문자와 일치
\d     - 모든 숫자와 일치
\D     - 숫자가 아닌 모든 문자와 일치
\w     - 밑줄을 포함한 모든 문자,숫자와 일치
\W     - 단어 문자가 아닌 문자에 대응한다. ([^A-Za-z0-9_]와 동일)
  • 정규표현식은 /^[값의범위설정]*$/ 형식으로 지정하고, test.(검사할 문자열) 형식으로 검사한다.
    • 문자열이 정규표현식에 부합할 경우 true를 반환한다.
const 변수이름 = /^[값의범위설정]*$/;
변수이름.test(검사할 문자열);

 

1) 한글 입력 검사 예시

// 이름을 영어로 입력
const username = "Andy";

const example1 = /^[ㄱ-ㅎ가-힣]*$/;
if(!example1.test(username)) {
  console.log("한글만 입력 가능합니다.");
};  // 한글만 입력 가능합니다.

 

2) 숫자 입력 검사 예시

  • 숫자를 문자열로 입력해도 된다. (ex_ "20")
// 나이를 문자열로 입력
const age = "스무살";

const example2 = /^[0-9]*$/;
if(!example2.test(age)) {
  console.log("숫자만 입력 가능합니다.");
}  // 숫자만 입력 가능합니다.

 

3) 영문 + 숫자 입력 검사 예시

// 아이디를 한글로 입력
const userId = "콩순이77"

const example3 = /^[a-zA-Z0-9]*$/;
if(!example3.test(userId)) {
  console.log("영문과 숫자만 입력 가능합니다.");
}  // 영문과 숫자만 입력 가능합니다.


// 아이디의 최대 글자 수 검사
if(userId.length > 20) {
  console.log("아이디는 최대 20자 까지만 입력 가능");
}

 

5. 배열 (Array)

  • 자바스크립트의 내장 기능 중 가장 중요하고 자주 쓰이는 역할을 한다.
  • 배열의 원소를 추가, 삭제 등등 변경하는 기능들이 있다.

 

예제들의 기능을 확인하기 위한 배열 생성 1

const data = [10, 20, 30, 40, 50];

1 ~ 6번 예제 사용

1) push( )

  • push(value) 형태로 사용되며, 배열의 맨 끝에 요소를 추가한다. (파라미터 수 제한 없음)
data.push(60,70);
console.log(data);  // [ 10, 20, 30, 40, 50, 60, 70 ]

 

2) pop( )

  • 파라미터로 받는 값은 없고, 배열의 맨 끝의 요소를 제거할 때 쓰인다.
  • 변수에 대입하면 배열의 마지막 값을 리턴한다.
const k = data.pop();
console.log(k);  // 70
console.log(data);  // [ 10, 20, 30, 40, 50, 60 ]

 

3) unshift( )

  • unshift(value) 형태로 사용되며, 배열의 맨 앞에 요소를 추가한다. (파라미터 수 제한 없음)
data.unshift(0,10);
console.log(data);  // [ 0, 10, 10, 20, 30, 40, 50, 60 ]

 

4) shift( )

  • 파라미터로 받는 값은 없고, 배열의 맨 앞의 요소를 제거한다.
  • 변수에 대입하면 배열의 맨 앞의 값을 리턴한다.
const x = data.shift();
console.log(x);  // 0
console.log(data);  // [ 10, 10, 20, 30, 40, 50, 60 ]

 

5) splice( )

  • splice(시작위치, 갯수) 형태로 사용되며, 원하는 위치의 값을 변환하거나 제거한다. (위치는 0부터 시작한다)
const z = data.splice(2,3); // 2번째 위치부터 3개를 자른다
console.log(z);  // [ 20, 30, 40 ]
console.log(data);  // [ 10, 10, 50, 60 ]
  • 파라미터 값(시작위치, 갯수) 외에 값을 넣어 그 위치에 다른 요소들을 넣을 수 있다.
    • 제거한 수 보다 추가되는 요소가 많을 경우 배열이 확장 된다. (기존 원소들은 뒤로 밀린다)
    • 제어한 수 보다 추가되는 요소가 적을 경우 배열이 축소된다.
data.splice(0,2,'a','b','c'); // 0번째 부터 2개 제거하고 'a','b','c'를 넣는다.
console.log(data);  // [ 'a', 'b', 'c', 50, 60 ]
  • 삭제할 요소의 수를 0으로 지정하면 중간에 삽입할 수 있다.
data.splice(3,0,'d','e');  // 3번째 위치부터 0개를 제거
console.log(data);  // [ 'a', 'b', 'c', 'd', 'e', 50, 60 ]

 

6) join( )

  • 배열의 모든 원소들을 하나로 연결해 문자열로 반환한다.
const a = data.join("");
console.log(a);  // abcde5060

const b = data.join("/");
console.log(b);  // a/b/c/d/e/50/60

const c = data.join(" ");
console.log(c);  // a b c d e 50 60

const d = data.join(" + ")
console.log(d);  // a + b + c + d + e + 50 + 60

 

7) concat( )

  • 배열을 결합하여 새로운 배열을 반환한다.
const a = [1,2];
const b = [3,4,5];
const c = [6,7,8,9];
const d = a.concat(b,c);
console.log(d);  // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

 

예제들의 기능을 확인하기 위한 배열 생성 2

let arr1 = [1, 0, false, NaN];

8) indexOf( )

  • indexOf(value, from) 형태로 사용하며, 인덱스 from 부터 시작해 value(요소)의 인덱스 값을 찾는다. (from은 생략해도 된다)
  • 요소를 찾으면 해당 요소의 인덱스를 반환하고, 못찾으면 -1을 반환한다.
  • lastIndexOf( ) 도 비슷한 기능을 하는데 탐색을 끝에서 부터한다. (from 값이 없으면 처음부터 탐색)
console.log(arr1.indexOf(0));  // 1
console.log(arr1.indexOf(false));  // 2

// 없는 값 찾을 때
console.log(arr1.indexOf(null));  // -1

// NaN 값 찾을 때
console.log(arr1.indexOf(NaN));  // -1

 

9) includes( )

  • indexOf(value, from) 와 비슷하지만, includes( )는 해당 요소를 찾으면 true 값을 반환한다.
  • 요소를 못찾으면 false 값을 반환한다.
  • 요소의 위치를 정확히 알고 싶은게 아니고, 요소가 배열 내 존재하는지 여부만 확인하고 싶을 때 사용하는게 좋다.
  • includes( )는 NaN을 제대로 처리한다는 점에서 indexOf( )와 약간 차이가 있다.
console.log(arr1.includes(1));  // true

// 없는 값 찾을 때
console.log(arr1.includes(100));  // false

// NaN 값 찾을 때
console.log(arr1.includes(NaN));  // true

※ indexOf( ) 와 includes( ) 는 요소를 찾을 때 완전 항등 연산자 ( === )를 사용한다는 점을 유의해야 한다.

 

예제들의 기능을 확인하기 위한 배열 생성 3

const arr2 = [5, 12, 8, 131, 44];

10) find( )

  • 주어진 판별함수를 만족하는 첫번째 값을 반환한다. (배열 검색) 못찾으면 undefined를 반환.
  • 찾고자 하는 항목이 아닌 검색 규칙을 규현한 콜백함수를 전달해야 한다.
  • true를 리턴하는 순간 배열의 탐색을 중단한다. (배열 중 찾은 값까지 반환)
// 파라미터로 전달되는 v는 배열의 모든 원소가 순차적으로 전달된다.
const found = arr2.find(function(v) {
  
  // v를 우리가 원하는 조건에 충족하는지 검사하여 true / false를 리턴한다.
  // true를 리턴하는 순간 배열의 탐색을 중단한다. (break와 동일한 기능)
  if(v % 2 == 0) {
  	return true;  // true로 리턴되는 값은 found에 저장
  } else {
  	return false;  // false로 리턴되는 값은 버려진다.
  }
	
});
console.log(found);  // 12

 

11) filter( )

  • 파라미터 값을 콜백함수로 전달 받으며, find( ) 와 다르게 조건에 충족하는 모든 값을 반환한다. (배열 전체 검색)
  • 콜백함수의 파라미터 값은 (요소, 인덱스, 배열값) 으로 받는다.
const found2 = arr2.filter(function(v, i , arr) {
  console.log(`v= ${v}, i= ${i}, arr= ${arr}`);
  /*
    		v= 5, i= 0, arr= 5,12,8,131,44
		v= 12, i= 1, arr= 5,12,8,131,44
		v= 8, i= 2, arr= 5,12,8,131,44
		v= 131, i= 3, arr= 5,12,8,131,44
		v= 44, i= 4, arr= 5,12,8,131,44
  */
  
  if(v % 2 == 0) {
  	retrun true;  // true가 리턴되는 경우 v는 found2 배열의 원소로 저장
  } else {
  	return false;  // false가 리턴되는 경우 v는 버려진다.
});
console.log(found2);  // [ 12, 8, 44 ]

 

12) sort( )

  • 콜백함수를 받아 배열을 정렬해준다.
  • 콜백함수 없이 사용시 배열의 모든 원소를 문자열로 취급하기 때문에 글자 정렬 기준이 적용된다. 
arr2.sort();
console.log(arr2);  // [ 12, 131, 44, 5, 8 ]
  • 숫자를 sort( ) 함수로 정렬시 콜백함수로 받아 처리해야한다.
// 정렬을 위해 비교되는 원소값들이 파라미터로 전달된다.
arr2.sort(function(a, b) {
  console.log("a= %s, b= %s",a ,b);
/*
		a= 12, b= 5
		a= 8, b= 12
		a= 8, b= 12
		a= 8, b= 5
		a= 131, b= 8
		a= 131, b= 12
		a= 44, b= 12
		a= 44, b= 131
*/ 
  if(a > b) {
    return 1;  // 리턴값이 양수인 경우: a가 b보다 크다
  } else {
    return -1;  // 리턴값이 음수인 경우: b가 a보다 크다
  }
});
console.log(arr2);  // [ 5, 8, 12, 44, 131 ]

 

13) reverse( )

  • 파라미터로 받는 값은 없고, 배열을 역순 배치 해준다.
const arr2 = [5, 12, 8, 131, 44];
arr2.reverse();
console.log(arr2);  // [ 44, 131, 8, 12, 5 ]

 

예제들의 기능을 확인하기 위한 배열 생성 4

const arr3 = [10, 20, 30, 40, 50];

※ for문을 활용한 배열 원소 스캔

for(let i = 0; i < arr3.length; i++) {
  if(i == 3) {
    console.log("종료");
    break;
  }
  console.log("%d번째 원소 -> %d", i, arr3[i]);
}
/*
0번째 원소 -> 10
1번째 원소 -> 20
2번째 원소 -> 30
종료
*/

 

14) some( )

  • some(value, index) 형태로 사용되며, for문을 함수형태로 나타낸 것이다. (반복문 역할을 한다)
  • 콜백함수에게 배열의 값(value)과 인덱스(index)를 전달한다.
  • 콜백함수는 원소의 수 만큼 순차적으로 실행된다.
  • 함수의 중단은 return으로 처리한다. (break는 for, while문 안에서만 사용 가능하다.)
arr3.some((v,i) => {

  // some 함수는 콜백함수가 true를 리턴하는 순간 탐색을 중단
  if(i == 3) {  // 인덱스 값이 3이 되면
    console.log("종료");
    return true;  // break와 같은 역할
  }
  console.log("%d번째 원소 -> %d", i ,v);
});
/*
0번째 원소 -> 10
1번째 원소 -> 20
2번째 원소 -> 30
종료
*/

 

15) forEach( )

  • forEach(value, index) 형태로 사용되며, some( ) 함수와 사용방법이 같고, 반복문 역할을 한다.
  • some( ) 함수는 조건에 만족하는 값을 찾으면 즉시 중단하지만, forEach( ) 는 중단하지 않는다.
arr3.forEach((v, i) => {
  if(i == 3) {
    console.log("종료");
    return;
  }
  console.log("%d번째 원소 -> %d", i ,v);
});
/*
0번째 원소 -> 10
1번째 원소 -> 20
2번째 원소 -> 30
종료
4번째 원소 -> 50
*/
  • forEach( ) 응용
// 주어진 배열 값에서 4의 배수 구하기
const example = [];
arr3.forEach((v,i) => {
  if(v % 4 == 0) {
  	example.push(v);
  }
});
console.log(example);  // [ 20, 40 ]

 

16) map( )

  • map(value, index) 형태로 사용되며(index는 생략가능), 콜백함수의 리턴하는 값들을 하나의 배열로 묶어 변수에 저장한다.
  • 반복문 형태로 사용되며, 배열 함수 중에서 가장 많이 쓰인다.
const ex1 = arr3.map((v,i) => {
  return `${i}번 인덱스의 값: ${v}`;
});
console.log(ex1);
/*
[
  '0번 인덱스의 값: 10',
  '1번 인덱스의 값: 20',
  '2번 인덱스의 값: 30',
  '3번 인덱스의 값: 40',
  '4번 인덱스의 값: 50'
]
*/

// 처리로직이 한 줄일 경우, return 키워드 생략 가능
const ex2 = arr3.map((v,i) => `${v}값의 인덱스 위치: ${i}`);
console.log(ex2);
/*
[
  '10값의 인덱스 위치: 0',
  '20값의 인덱스 위치: 1',
  '30값의 인덱스 위치: 2',
  '40값의 인덱스 위치: 3',
  '50값의 인덱스 위치: 4'
]
*/

+ Recent posts