본문 바로가기

FrontEnd/java script

[java script] 객체 1(object, 내장 객체 Array)

728x90
반응형

1. 객체란?

   ▷ 프로그램에서 인식할 수 있는 모든대상

   ▷ 데이터를 저장하고 처리하는 기본 단위

 

◎ 자바스크립트 객체 : 자바스크립트 안에 미리 객체로 정의해 놓은 것입니다.

   ▷ 문서 객체 모델(DOM) : 문서, 이미지, 링크, 텍스트 필드 모두 별도 객체로 관리

   ▷ 브라우저 관련 객체, 내장 객체(자주 사용하는 요소 저장)

   ▷ 사용자 정의 객체 : 사용자가 직접 만드는 객체

 

◎ 객체 인스턴스 생성 방법 : 객체 자체가 아닌 인스턴스 형태로 만들어서 사용합니다.

   ▷ 인스턴스 : 객체를 틀처럼 사용해서 같은 모양으로 찍어낸 것입니다.

         ex) (기본형) new 객체명

 

 

ex) Date 객체의 인스턴스 만들어 날짜와 시간 표시 예제

 

<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>What time is it?</title>
	<style>
		body {
			font-size:2em;
			text-align: center;
		}
	</style>
</head>
<body>
	<script>
		var now = new Date();         //Date 인스턴스 생성 후 변수에 저장
		document.write("현재 시간은 " + now);
	</script>
</body>
</html>
현재 시간은 Fri Dec 16 2022 09:14:41 GMT+0900 (한국 표준시)

 

현재 시간에 대한 결과 값이 출력됩니다.

 

 

◎ 프로퍼티(property)와 메서드(method)

   ▷ 프로퍼티 : 객체의 특징이나 속성(제조사, 모델명, 색상 등등)

   ▷ 메서드 : 객체에서 할 수 있는 동작(시동 걸기, 움직이기, 멈추기 등등)

 

	<script>
		var now = new Date();
		document.write("현재 시각은 " + now.toLocaleString()) ;	// 로컬 형식으로 표시하기
	</script>
현재 시각은 2022. 12. 16. 오전 9:23:41

 

위 코드의 script 부분에 Date 객체의 메서드를 사용합니다. 결과는 현재 날짜와 시간이 다른 형식으로 표기됩니다!

 

 

2. 내장 객체(Array 객체)

   ▷ 배열 생성 방법 : var arr = new Array(3);  ( 자바 배열 생성 방법 : int[] arr = new int[3]; )

 

// 1. 초깃값이 없는 경우

var numbers = new Array();    //배열 크기 미지정
var numbers = new Array(4);   //배열 크기 4

// 2. 초깃값이 있는 경우

var numbers = ["one", "two", "three", "four"];        //문자형 배열 선언
var numbers = Array("one", "two", "three", "four");   //Array 객체를 이용한 선언
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Array</title>
	<style>
		body {
			text-align: center;
		}
	</style>
</head>
<body>
  <h1>배열의 각 요소 </h1>
	<script>
		var numbers = ["one", "two", "three", "four"];
		var i;

		document.write("<p>" + numbers[0] + "</p>");
		document.write("<p>" + numbers[1] + "</p>");
		document.write("<p>" + numbers[2] + "</p>");
		document.write("<p>" + numbers[3] + "</p>");

		for(i=0; i < numbers.length; i++){
			document.write("<p>" + numbers[i] + "</p>");
		}

	</script>
</body>
</html>
배열의 각 요소
one
two
three
four

 

위와 같은 출력이 나타나게 됩니다. 각각 출력을 해보는 방법과 for문을 이용한 방법은 동일한 결과 값을 출력합니다.

자바 스크립트도 배열의 길이 지정방법이 자바랑 동일하네요!

 

 

 Array 객체의 메서드

 

No 종류 설명
1 concat 기존 배열에 요소를 추가해 새로운 배열을 만듭니다.
2 every 배열의 모든 요소가 주어진 함수에 대해 참이면 true, 거짓이면 false를 반환합니다.
3 filter 배열 요소 중 주어진 필터링 함수에 대해 true인 요소만 골라 새로운 배열을 만듭니다.
4 forEach 배열의 모든 요소에 대해 주어진 함수를 실행합니다.
5 indexOf 주어진 값과 일치하는 값이 있는 배열 요소의 첫 인덱스를 찾습니다.
6 join 배열 요소를 문자열로 합칩니다. 이때 구분자를 지정할 수 있습니다.
7 push 배열의 맨 끝에 새로운 요소를 추가한 후 새로운 length를 반환합니다.
8 unshift 배열의 시작 부분에 새로운 요소를 추가합니다.
9 pop 배열의 마지막 요소를 꺼내 그 값을 결과로 반환합니다.
10 shift 배열에서 첫 번째 요소를 꺼내 그 값을 결과로 반환합니다.
11 splice 배열에 요소를 추가하거나 삭제합니다.
12 slice 배열에서 특정한 부분만 잘라냅니다.
13 reverse 배열의 배치 순서를 역순으로 바꿉니다.
14 sort 배열 요소를 지정한 조건에 따라 정렬합니다.
15 toString 배열에서 지정한 부분을 문자열로 반환합니다. 이때 각 요소는 쉼표(,)로 구분합니다.

 

   ▷ concat : 배열끼리 합치는 메서드

      ▶ 서로 다른 배열 2개를 합쳐서 새로운 배열을 만듭니다.

      ▶ 기존 배열에 영향을 주지 않습니다.

 

	<script>
		var nums = [1, 2, 3];
		var chars = ["a", "b", "c", "d"];

		var numsChars = nums.concat(chars);
		var charsNums = chars.concat(nums);
		document.write("nums에 chars 합치면 : ", numsChars, "<br> chars에 nums 합치면: ", charsNums);
		
		document.write("<br>", nums);
		document.write("<br>", chars);
		document.write("<br>", numsChars);
		document.write("<br>", charsNums);

	</script>
nums에 chars 합치면 : 1,2,3,a,b,c,d
chars에 nums 합치면: a,b,c,d,1,2,3
1,2,3
a,b,c,d
1,2,3,a,b,c,d
a,b,c,d,1,2,3

 

 

   ▷ join : 배열 요소끼리 합치는 메서드

      ▶ 배열 요소를 연결해서 하나의 문자열로 만들어줍니다.

      ▶ 요소 사이에 원하는 구분자를 넣을 수 있습니다.

      ▶ 구분자를 지정하지 않으면 쉼표(,)로 구분됩니다.

 

	<script>
		var nums = [1, 2, 3];
		var chars = ["a", "b", "c", "d"];

		var string1 = nums.join();
		document.write("구분자 없이 합치기 : " + string1 + "<br>");
		var string2 = chars.join('/');
		document.write("구분자 포함 합치기 : " + string2 + "<br>");
	</script>
구분자 없이 합치기 : 1,2,3
구분자 포함 합치기 : a/b/c/d

 

 

   ▷ push, unshift : 새로운 요소를 추가하는 메서드

      ▶ push : 배열 맨 끝에 요소를 추가합니다.

      ▶ unshift : 배열 맨 앞에 요소를 추가합니다.

      ▶ 배열의 길이 값 반환, 기존의 배열이 바뀝니다.

 

	<script>
		var nums = [1, 2, 3];
		var chars = ["a", "b", "c", "d"];

		var ret1 = nums.push(4, 5);
		document.write("length : ", ret1, " | 배열 : ", nums + "<br>");
		var ret2 = nums.unshift(0);
		document.write("length : ", ret2, " | 배열 : ", nums + "<br>");
	</script>
length : 5 | 배열 : 1,2,3,4,5
length : 6 | 배열 : 0,1,2,3,4,5

 

 

   ▷ pop, shift : 배열에서 요소를 꺼내는 메서드

      ▶ pop : 배열 뒤쪽에서 요소를 꺼냅니다.

      ▶ shift : 배열 앞쪽에서 요소를 꺼냅니다.

      ▶ 꺼낸 요소를 반환하고, 기존 배열을 꺼낸 요소가 빠진 상태로 변경됩니다.

 

	<script>
		var nums = [1, 2, 3];
		var chars = ["a", "b", "c", "d"];

		var popped1 = chars.pop();
		document.write("꺼낸 요소 : ", popped1, " | 배열 : ", chars + "<br>");
		var popped2 = chars.shift();
		document.write("꺼낸 요소 : ", popped2, " | 배열 : ", chars + "<br>");
	</script>
꺼낸 요소 : d | 배열 : a,b,c
꺼낸 요소 : a | 배열 : b,c

 

 

   ▷ splice : 중간에 요소를 추가하거나 삭제하는 메서드(잘라내기)

      ▶ 배열 중간에 2개 이상의 요소를 추가하거나 삭제할 수 있습니다.

      ▶ 새로운 배열이 결과 값으로 반환됩니다.

 

<script>
    // 인수가 1개인 경우 : 요소 삭제하기
    var numbers = [1, 2, 3, 4, 5];
    var newNumbers = numbers.splice(2);             //numbers[2]부터 끝까지 잘라내기
    document.write("<h3>splice 인수 1개</h3>");
    document.write("반환된 배열 : " + newNumbers + "<br>");
    document.write("변경된 배열 : " + numbers + "<br>");

    // 인수가 2개인 경우 : 첫 번째(시작 지점), 두 번째(잘라낼 개수)
    var study = ["html", "css", "web", "jquery"];
    var newStudy = study.splice(2, 1);                //study[2]부터 1개를 잘라내기
    document.write("<h3>splice 인수 2개</h3>");
    document.write("반환된 배열 : " + newStudy + "<br>");
    document.write("변경된 배열 : " + study + "<br>");

    // 인수가 3개 이상인 경우 : 첫 번째(시작 지점), 두 번째(잘라낼 개수), 세 번째(추가 요소 지정)
    var newStudy2 = study.splice(2, 1, "js");         //study[2]부터 1개를 잘라내고 이 지점에 "js" 추가
    document.write("<h3>splice 인수 3개</h3>");
    document.write("반환된 배열 : " + newStudy2 + "<br>");
    document.write("변경된 배열 : " + study + "<br>");
</script>
splice 인수 1개
반환된 배열 : 3,4,5
변경된 배열 : 1,2

splice 인수 2개
반환된 배열 : web
변경된 배열 : html,css,jquery

splice 인수 3개
반환된 배열 : jquery
변경된 배열 : html,css,js

 

 

   ▷ slice : 기존 배열을 바꾸지 않으면서 삭제하는 메서드(복사하기)

      ▶ 요소를 여러 개 꺼낼 수 있습니다.

      ▶ 요소를 삭제한 후에도 기존 배열이 바뀌지 않습니다.

 

	<script>
		var colors = ["red", "green", "blue", "white", "black"];
		var colors2 = colors.slice(2);  // color[2]부터 끝까지 내용 가져오기
		document.write("<h3>slice 인수 1개 - 내용만 가져오기</h3>");
		document.write(colors2 + "<br>");
		document.write(colors + "<br>");

		var colors3 = colors.slice(2, 4);  // color[2]부터 4번째(color[3])까지 내용 가져오기
		document.write("<h3>slice 인수 2개 - 내용만 가져오기</h3>");
		document.write(colors3 + "<br>");
		document.write(colors + "<br>");
	</script>
slice 인수 1개 - 내용만 가져오기
blue,white,black
red,green,blue,white,black

slice 인수 2개 - 내용만 가져오기
blue,white
red,green,blue,white,black

 

slice 메서드는 기존 배열에 영향을 주지않고 복사하는 복사(control + c)와 같은 역할입니다.

splice 메서드는 기존 배열의 일부 요소를 삭제하고 붙여넣는 잘라내기(control + x)와 같은 역할입니다.

 

 

   ▷ sort : 배열 요소를 지정한 조건에 따라 정렬합니다.

      ▶ 기본적으로 오름차순으로 정렬합니다. 기준은 아스키 코드 기준이에요!

 

	<script>
		var colors = ["red", "green", "blue", "white", "black"];
        
		var reverse1 = colors.reverse();
		document.write("<h3>reverse</h3>");
		document.write(reverse1 + "<br>");

		var colors4 = colors.sort();
		document.write("<h3>sort</h3>");
		document.write(colors4 + "<br>");

		var numbers = [1, 5, 203, 48, 4];
		document.write("<h3>sort</h3>");
		numbers.sort();
        
		/*numbers.sort(function(a,b){
			if(a>b) return 1;
			else if(b>a) return -1;
			else return 0;
		});*/
        
		/*numbers.sort(function(a,b){
			return a-b;
		})*/
        
		document.write(numbers);
	</script>
reverse
black,white,blue,green,red

sort
black,blue,green,red,white

sort
1,203,4,48,5

 

문자는 오름차순으로 정렬이 되지만, 숫자는 첫글자가 오름차순을 기준으로 정렬이 됩니다.

sort라는 함수는 첫글자를 아스키 코드로 비교하고 같으면 두 번째, 계속 반복이 되면서 오름차순으로 정렬합니다.

 

주석으로 처리되어 있는 부분은 sort에 function을 새로 지정하면서 숫자들을 오름차순, 내림차순으로 정렬할 수 있게 만듭니다. sort라는 함수 자체를 제대로 이해해야 출력 결과를 이해할 수 있습니다. 자세한건 다음번에 sort함수에 대해 공부해서 코드와 함께 올려볼게요!!

 

Array의 내장 객체까지 알아보았고 다음 글에서 자바스크립트의 객체에 대해 더 다뤄볼게요~

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형