객체와 달리 배열은 새로운 Property(값)를 기존 Property(값) 사이에 끼워넣기가 가능합니다.
배열은 순서가 있는 자료를 저장하고 관리하는 용도에 최적화된 자료구조입니다.
let arr = new Array();
let arr = []; // 대부분 이걸 사용합니다.
```![](https://velog.velcdn.com/images%2Fcptkuk91%2Fpost%2F04c4b602-7aa8-4c6f-b0d7-fac82fedf0ca%2Fclout.jpeg)
대부분 대괄호 배열을 사용합니다.
ex)
let fruits = ["사과", "오렌지", "자두"];
console.log(fruits[0]); // 사과
console.log(fruits[1]); // 오렌지
console.log(fruits[2]); // 자두
console.log(fruits[3]); // undefined;
#### 배열의 요소를 수정
위와 같은 방법을 응용해 배열의 요소를 수정할 수 있습니다.
let fruits = ["사과", "오렌지", "자두"];
fruits[2] = "수박";
console.log(fruits); // 자두가 수박으로 수정됐습니다.
#### 배열의 요소를 추가
위와 같은 방법을 응용해 배열의 요소를 추가하는 것도 가능합니다.
let fruits = ["사과", "오렌지", "자두"];
fruits[3] = "추가된 자료";
console.log(fruits); // '사과', '오렌지', '자두', '추가된 자료'가 출력됩니다.
#### 배열의 요소의 갯수 파악
let fruits = ["사과", "오렌지", "자두"];
console.log(fruits.length); // 3이 출력됩니다. index는 0,1,2 지만 갯수는 3개 입니다.
#### 배열에서 trailing 쉼표
배열의 마지막 요소는 객체와 마찬가지로 쉼표로 끝날 수 있습니다.
## pop, push와 shift, unshift 이해하기
**push** : 맨 끝에 요소를 추가합니다.
(배열 끝에 요소를 추가합니다.)
ex)
let fruits = ["사과", "오렌지", "자두"];
fruits.push('배');
console.log(fruits); // 배열의 끝에 배를 추가합니다.
**shift** : 제일 앞 요소를 꺼내 제거한 후 나머지 요소를 앞으로 밀어줍니다. (두 번 째 요소가 첫 번째 요소가 됩니다.)
ex)
let fruits = ["사과", "오렌지", "자두"];
fruits.shift();
console.log(fruits); // 배열 맨 앞 사과를 제거하고, 오렌지, 자두를 출력
**pop** : 스택 끝 요소를 추출합니다.
(배열의 끝 요소를 제거하고, 제거한 요소를 반환합니다.)
ex)
let fruits = ["사과", "오렌지", "자두"];
fruits.pop();
console.log(fruits); // '자두'를 제외한 사과, 오렌지 출력
**unshift** : 배열 앞에 요소를 추가합니다.
ex)
let fruits = ["사과", "오렌지", "자두"];
fruits.unshift('수박');
console.log(fruits); // 수박, 사과, 오렌지, 자두 출력
#### push와 unshift는 여러 개를 한 번에 추가할 수도 있습니다.
let fruits = ["사과"];
fruits.push("오렌지", "배");
fruits.unshift("파인애플", "레몬");
// ["파인애플", "레몬", "사과", "오렌지", "배"]
alert( fruits );
배열은 순서가 있는 자료를 저장하는 용도로 만들어진 특수한 자료구조입니다.
따라서 배열을 신중하게 조정하고, 배열을 사용할 때는 목적에 맞게 사용해야합니다.
## 배열에서 반복문
for문은 배열을 순회할 때 쓰는 가장 기본적인 방법입니다. 순회시에는 인덱스를 사용합니다.
let arr = ["사과", "배", "바나나"];
for(let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
// 사과
// 배
// 바나나
// 위 와 같이 한 줄씩 출력합니다.
### 배열을 순회하는 방법으로는 for...of 가 있습니다.
let fruits = ["사과", "배", "바나나"];
for(let fruit of fruits){
console.log(fruit);
}
// 사과
// 배
// 바나나
// 위와 같이 한 줄 씩 출력합니다.
for..of를 사용하게 될 경우 요소의 인덱스는 얻을 수 없고 값만 얻을 수 있습니다.
### for...in (for...of와 다르기 때문에 조심해야 합니다.)
for...in은 모든 Property를 대상으로 순회합니다.
하지만 속도가 느리기 때문에 배열에서 for...in은 권장하지 않습니다.
let fruits = ["사과", "배", "바나나"];
for(let fruit in fruits){
console.log(fruits[fruit]);
}
#### 배열에서 'length' Property
배열에서 조작을 할 경우 length는 자동으로 갱신됩니다.
배열의 길이를 임의로 줄여버리면 이후의 값은 삭제됩니다.
ex)
let arr = [1,2,3,4,5];
arr.length = 2;
console.log(arr); // 1,2만 출력한다.
이런 특징을 활용해 arr.length = 0 을 칠 경우 배열이 초기화 됩니다.
#### 다차원 배열
배열 역시 배열의 요소가 될 수 있습니다. 다차원 배열은 행렬을 저장하는 용도로 쓰입니다.
let matrix = [
[1,2,3], // 0
[4,5,6], // 1 (0,1,2) 해서 중간값이 5!
[7,8,9]
];
console.log(matrix[1][1]); // 5를 반환합니다.