# 배열

## 배열의 생성

```javascript
let array1 = ["a", "b", "c"];
let array2 = new Array("a", "b", "c");
let array3 = Array("a", "b", "c");
let array4 = Array(3); // [,,] 길이가 3인 배열
let array4 = Array.of(3); // [3] ECSMScript 2015
```

## 인덱스

자바스크립트의 배열은 0부터 시작하는 인덱스를 사용합니다.

## 배열의 길이

```length```는 메서드가 아니라 속성입니다. 읽기뿐만 아니라 쓰기도 할 수 있으며 length에 0을 할당하면 크기가 0인 배열이 됩니다.

```javascript
let array = ["a", "b", "c"];
console.log(array.length);
```

## 반복

```javascript
let array = ["a", "b", "c"];

/* C 스타일의 for 루프 */
for (let i = 0; i < array.length; i++) {
    console.log(array[i]);
}

/* for .. of */
for (const item of array) {
    console.log(item);
}

/* for each */
array.forEach(function (item) {
    console.log(item);
});

/* for each with arrow function */
array.forEach((item) => console.log(item));

/* map */
array.map((item, idx)=>{
    console.log(item);
});
```

## 메서드

```javascript
concat()
join()
push()
pop()
shift()
unshift()
slice()
splice()
reverse()
sort()
indexOf()
lastIndexOf()
```

```javascript
forEach()
map()
filter()
every()
some()
reduce()
reduceRight()
```

## 배열의 해체

```javascript
let array = ["a", "b", "c"];
let [a, b] = array;

console.log(a);
console.log(b);
```