Web - Front end 16. Javascript 배열과 Array 객체

 Web - Front end 16. Javascript 배열과 Array 객체



1. 배열

여러개의 원소들을 연속적으로 저장하고 전체를 하나의 단위로 다루는 데이터 구조

서로 자료형이 다른 데이터들을 저장할 수도 있음

각 원소는 대괄호([ ])와 0부터 시작하는 인덱스로 접근

plot[1];






2. 대괄호([ ])로 배열 생성

[ ] 연산자를 이용해 생성

[ ] 안에 만들고자 하는 원소들의 초기 값들을 나열

let week = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sta', 'Sun'];
let plot = [-20, -5, 0, 15, 20];




* 배열 크기와 원소 추가

배열은 처음 만들어진 크기로 고정되지 않고 원소를 추가하면 늘어남

위의 예제예서 크기가 5인 plot에 인덱스 5번과 6 번에 값을 추가하면 배열의 길이가 늘어나면서 원소가 추가됨. 단 인덱스 10번에 값을 추가하면 중간의 값들이 'undifined'가 되므로 주의해야함

plot[5] = 35; // 배열에 6번째 원소 추가하고 크기가 6으로 늘어남
plot[6] = 50; // 배열에 7번째 원소 추가하고 크기가 7으로 늘어남
plot[10] = 65; // 인덱스 7~11의 원소들이 'undefined' 가 되고 크기가 11로 늘어남




* 예제 - [ ] 를 사용하여 배열을 만들고 각 배열의 값 만큼 '*'을 출력

<body>
<h2>[] 로 배열 만들기</h2>
<hr>
<script>
let plot = [20, 5, 8, 15, 20]; //원소 5개의 배열 생성
document.write("let plot = [20, 5, 8, 15, 20]<br><br>");

for (let i=0; i<plot.length; i++){
for (let j=0; j<plot[i]; j++){
document.write("*");
}
document.write(" => " + plot[i]+ "<br><br>");
}
</script>
</body>

















3. Array 로 배열 생성

 JavaScript는 Array로 생성한 배열이나 [ ]로 생성한 배열을 똑같이 다룸 

[ ]로 생성 하든 new Array로 생성하든, 모두 Array 객체로 다룸


- 초기값을 가진 배열 생성

'new' 키워드를 이용해서 Array 타입의 객체를 생성하고 () 안에 초기값 입력

let plot = new Array(-20, -5, 0, 15, 20);



-  초기화 되지 않은 배열 생성

배열 객체를 일단 생성한 후 나중에 원소에 값을 저장할 수 있음

let plot = new Array(5);
plot[0] = 20;
plot[1] = 5;
...



- 빈 배열 생성

초기에 배열의 원소 개수를 예상할 수 없으면 빈 배열 생성 가능

let plot = new Array();


처음에는 빈 배열이지만 원소를 순서대로 삽입하면 배열의 크기가 자동으로 늘어남
원소는 반드시 순서대로 삽입해야 하면 중간에 건너뛰면 중간의 원소들은 'undfined '가 됨

plot[0] = 20; // 배열 크기는 1
plot[1] = 15; // 배열 크기는 2














4. length 프로퍼티

Array 객체의 length 프로퍼티는 배열의 크기를 나타냄

객체에서 자동 관리하는 프로퍼티지만 사용자가 임의로 값을 변경하여 배령을 늘리거나 줄일 수 있음 (String 객체에서는 length 프로퍼티 변경 불가능) - 배열이 줄어들면 그만큼 원소가 삭제 되고 늘어나면 그만큼 빈 원소가 생김



* 예시 - length 프로퍼티를 이용해 평군 온도 구하기

<body>
<h2>Array 객체에 온도를 저장하여 평균 온도 구하기</h2>
<hr>
<script>
let degree = new Array();
degree[0] = 19.4;
degree[1] = 21.3;
degree[2] = 16.9;
degree[3] = 18.6;
degree[4] = 22.6;
degree[5] = 19.7;
degree[6] = 22.4;

let sum = 0;

// for문으로 테이블 생성
document.write('<table><tr>');
for (let i = 1; i <= degree.length; i++){
document.write("<th>5월 " + i + "일</th>");
}
document.write("</tr><tr>")
for (let i = 0; i < degree.length; i++){
document.write("<td>" + degree[i] + "도</td>");
}
document.write("</tr></table><br><br>")

// length 프로퍼티를 이용해서 온도의 평균값 구하기
for (let i = 0; i < degree.length; i++){
sum += degree[i];
}
let avg = sum / degree.length;
document.write("5월의 평균 온도 : 섭씨 " + avg.toFixed(2) + "도");
</script>
</body>














5. Array 객체의 메소드














* 예시

<head>
    <script>
function print(msg, arr){
document.write(msg + " " + arr.toString() + "<br><br>");
}
</script>
</head>
<body>
<h2>Array 객체의 다양한 메소드 활용</h2>
<hr>
<script>
let a = new Array("황", "김", "이");
let b = new Array("박");
let c;

print("a가 참조하는 배열 객체 내용 : ", a);
document.write("<br>");

c = a.concat(b);
print("a와 b를 합친 결과 : ", c);
print("a.concat(b) 후의 a의 결과 : ", a);
document.write("<br>");

c = a.join('###');
print("a와 b를 '###'로 구분하여 연결한 결과 : ", c);
print("a.join('###') 후의 a의 결과 : ", a);
document.write("<br>");

c = a.reverse(); // 기존의 배열의 순서가 역순으로 변경됨
print("a의 원소들의 순서를 뒤집은 결과 : c = ", c);
print("a.reverse() 후의 a의 결과 : ", a);
document.write("<br>");

c = a.slice(1, 2); // 일부만 슬라이스하여 새로운 배열 객체 반환
print("a를 index 1 ~ 2 전까지 슬라이싱한 결과 : ", c);
print("a.slice(1, 2) 후의 a의 결과 : ", a);
document.write("<br>");

c = a.sort(); // 기존의 배열 순서가 오름차순으로 변경
print("a의 원소들을 오름차순으로 정렬한 결과 : ", c);
print("a.sort() 후의 a의 결과 : ", a);
document.write("<br>");

c = a.toString(); // 쓰나 안쓰나 결과는 동일
print("a의 원소들을 합쳐서 문자열로 반환한 결과 : ", c);
print("a.toString() 후의 a의 결과 : ", a);
</script>
</body>


























* .toString() 은 묵시적으로 자동으로 호출되기 때문에 생략해도 무관







댓글

이 블로그의 인기 게시물

Spring Boot 6. 계시판 프로젝트

Spring Boot 2. Maria 데이터베이스 & Spring Data JPA

Django 10. DB 연동