#1. 배열
1. 배열(Array)이란?
- 여러 개의 값을 하나의 묶음으로 다루는 것이다.
- 배열은 저장된 값마다 인덱스 번호가 있으며, 0부터 시작한다.
- 각 요소에 자동으로 붙은 번호 (첫 번째 칸이 0부터 시작)
2. 배열의 선언 과 할당
- 자바스크립트에는 변수의 타입이 값이 할당될 때 정해지기 때문에 선언은 일반 변수와 같다.
- 선언과 할당이 나누어져 있는 경우 const로 선언할 수 없다.
- 배열에 값을 할당 할 때는 [ ](대괄호) 를 사용하며, 타입에 상관없이 값을 줄 수 있다.
// 선언과 동시에 할당
let arr = [1, 3.14, true, "Hi"];
// 자바 같은 경우, 타입에 맞게 값을 할당해야 하지만
// 자바스크립트는 타입에 상관 없이 가능
console.log(arr); // [1, 3.14, true, "Hi"]
let arr2 = [5];
console.log(arr2) // [5] -> 한칸짜리 배열 생성
- Array 클래스를 사용해서 할당할 수 있다.
let arr = new Array(1, 3.14, true, "Hi");
console.log(arr); // [1, 3.14, true, "Hi"]
// (!)주의사항
let arr2 = new Array(5);
console.log(arr2); // [ <5 empty items> ]
// new Array로 배열을 생성할 때 할당 값을 숫자 하나만 명시할 경우, 숫자 값 만큼의 빈 칸을 갖는 배열이 생성된다
// 배열의 각 칸은 모두 undefined로 할당 된다
3. 배열의 원소에 접근
- 배열의 각 원소는 0부터 시작하는데 이를 배열의 인덱스 라고 한다.
- 배열의 원소에 접근할 때는 인덱스 번호를 활용하여 접근한다.
let arr = [1, 3.14, true, "Hi"];
console.log(arr[0]); // 1
console.log(arr[1]); // 3.14
console.log(arr[2]); // true
console.log(arr[3]); // Hi
console.log(arr[4]); // undefined
// 존재하지 않는 배열 값을 출력할 대는 undefined가 출력된다
- 배열의 각 원소를 새로운 변수 a, b, c에 나누어서 저장할 수 있다. (비구조 문법이라고 하며, react에 많이 쓰인다고 한다)
let arr = [1,2,3];
const [a,b,c] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
- 배열의 길이(크기)를 확인할 때는 .length를 사용한다.
- 인덱스의 범위는 0부터 배열 길이 -1 까지이다. (0부터 시작하기 때문에 -1을 한다)
let arr = [1, 3.14, true, "Hi"]; // 선언과 할당
let length = arr.length;
console.log(length) // 4
4. 반복문 활용
- 배열은 인덱스가 0부터 배열의 길이 -1 하는 동안 순차적으로 증가한다는 특성이 있다.
const arr = new Array(5); // 5개의 빈 배열 생성
for(let i = 0; i < arr.length; i++) {
arr[i] = i * 10;
}
console.log(arr) // [ 0, 10, 20, 30, 40 ]
#2. 2차원 배열
1. 2차원 배열이란?
- 1차원 배열의 묶음으로 배열 안에 다른 배열 존재한다.
- 열의 개념만 존재하는 1차원 배열에 행의 개념을 추가한 형태가 2차원 배열이다.
- 2차원 배열은 할당된 공간마다 인덱스 번호 두개가 부여된다.(앞 번호는 행, 뒷 번호는 열, [행][열])
2. 2차원 배열 생성
- [ ] 를 사용하여 1차원을 표현하고 그 안에 다시 [ ] 를 콤마로 구분하여 2차원을 구성한다
const arr = [ [1,2,3], [4,5,6] ];
// [[m],[n]] m 값이 올라가면 행이 아래로 가고, n 값이 올라가면 열이 옆으로 이동
console.log(arr); // [ [1, 2, 3], [4, 5, 6] ]
3. 2차원 배열 원소에 접근
- 2행 3열인 경우 행의 인덱스는 0 ~ 1까지, 열의 인덱스는 0 ~ 2까지 존재한다.
- 배열에 저장된 원소에 접근하기 위해서는 변수 이름 뒤에 행, 열의 순서로 인덱스를 명시한다.
let arr = [[1,2,3], [4,5,6]];
console.log(myArr2[0][0]); // 1
console.log(myArr2[0][1]); // 2
console.log(myArr2[0][2]); // 3
console.log(myArr2[1][0]); // 4
console.log(myArr2[1][1]); // 5
console.log(myArr2[1][2]); // 6
// 행 → 열 순으로 인덱스를 열거 한다
- 2차원 배열도 .length를 통해 길이(크기)를 구할 수 있다.
const arr = [[1,2,3], [4,5,6]];
console.log(arr.length); // 2
// 배열 자체의 길이는 행을 나타낸다.(행의 크기를 알 수 있다)
console.log(arr[0].length); // 3
console.log(arr[1].length); // 3
// 배열의 각 행단위로 열을 조회할 수 있다.
// 2차원 배열의 모든 행의 열 크기가 항상 동일하다는 보장은 없다
4. 반복문 통해 배열값 출력
- 2차원 배열의 모든 원소를 출력하기 위해선 중첩 반복문을 사용해야 한다
- 바깥 반복문은 행을 출력하고, 안쪽 반복문은 열을 출력한다.
const arr = [[1,2,3], [4,5,6];
for(let i = 0; i < arr.length; i++) {
// 바깥 반복문은 행을 관여
console.log(`-${i}행-`);
console.log(arr[i];
for(let j = 0; j < arr[i].length; j++) {
// 안쪽 반복문은 i번째 행에 대한 열을 관여
console.log(myArr[i][j]);
}
}
[출력]
-0행-
[ 1, 2, 3 ]
1
2
3
-1행-
[ 4, 5, 6 ]
4
5
6
5. 가변 배열
- 원소로서 포함되는 각 배열의 크기가 동일하지 않는 경우를 가변 배열이라고 한다
- 항상 배열의 모든 행이 동일한 열로 구성되는 것은 아니다.(그렇다고 자주 등장하는건 아니다)
const data = [[1,3,5,7,9], [2,4,6]];
for(let i = 0; i < data.length; i++) {
console.log(`-${i}행-`);
console.log(data[i]);
for(let j = 0; j < data[i].length; j++) {
console.log(data[i][j];
}
}
// 출력
-0행-
[ 1, 3, 5, 7, 9 ]
1
3
5
7
9
-1행-
[ 2, 4, 6 ]
2
4
6
6. for - of 문
- for-of문을 활용해서 초기식, 조건식, 증감식 없이 배열값을 출력할 수 있다.
// 1차원 배열
const arr = [4,5,2,1,3,6];
for(const a of arr) {
console.log(a);
}
// 출력
4
5
2
1
3
6
// 2차원 배열
const arr2 = [[4,5,2], [1,3,6]];
for(const a of arr2) {
console.log(a);
for(const b of a) {
console.log(b);
}
}
// 출력
[ 4, 5, 2 ]
4
5
2
[ 1, 3, 6 ]
1
3
6
'국비수업 > JavaScript' 카테고리의 다른 글
[Javascript] JSON (0) | 2022.02.04 |
---|---|
[Javascript] [연습문제] 배열 실습 (0) | 2022.02.03 |
[Javascript] [연습문제] 기본 문법 활용 실습 (0) | 2022.01.28 |
[Javascript] 변수의 스코프, 조건문 과 반복문 (0) | 2022.01.27 |
[Javascript] 연산자 (0) | 2022.01.26 |