> For the complete documentation index, see [llms.txt](https://heunnajo.gitbook.io/javascript/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://heunnajo.gitbook.io/javascript/undefined-11.md).

# 배열(Array)

1. 문법

```javascript
var member = ['egoing', 'k8805', 'sorialgi'];
```

2\. 함수의 output으로 사용될 수 있는 배열

```javascript
function get_members() {
    return ['egoing','k8805','sorialgi'];
}
var members = get_members();
document.write(members[0]);
document.write(members[1]);
document.write(members[2]);
```

다음은 배열과 관련된 메소드들이다.

**toUpperCase()**

대문자로 바꿔주는 함수이다.

```javascript
a = 'egoing'
a.toUpperCase();//EGOING
```

**length**

배열의 길이를 알 수 있다.

```javascript
var a = ['egoing','k8805','sorialgi','leezche'];
alert (a.length);//4
```

아래 코드는 문자열 배열을 대문자로 출력하는 코드이다.

```javascript
function get_members(){
    return ['egoing','k8805','sorialgi','leezche'];
}
members = get_members();

for(var i = 0; i < members.length; i++) {
    document.write(members[i].toUpperCase()+"<br/>");
}
```

**(뒤에)데이터 추가**

```javascript
var li = ['a','b','c','d','e'];
li.push('f');
alert(li);//a b c d e f 출력된다.
```

**여러개의 원소를 추가**

```javascript
var li = ['a','b','c','d','e'];
li.concat('f','g');
alert(li);//a b c d e f g 출력된다.
```

**(앞에)데이터 추가**

```javascript
var li = ['a','b','c','d','e'];
li.unshift('f');
alert(li);//f a b c d e 출력된다.
```

**(중간에)데이터 추가**

```javascript
var li = ['a','b','c','d','e'];
li.splice(1,0,'B');//1번 인덱스 앞에다가 'B'를 추가한다.
```

**실행 결과**

![](/files/-MEQppFNSEsLSsLkiEhX)

```javascript
var li = ['a','b','c'];
li.splice(1,1,'x','y');//1번 인덱스 1개를 삭제하고 'x'와 'y'를 앞에 추가한다.
```

splice가 하는 일은 2가지이다.

배열에 데이터를 추가하고, 삭제된 데이터를 리턴해준다.

![](/files/-MEQsxxszwkT9vJ7uCD6)

**데이터 제거**

shift : 제일 앞의 원소를 제가한다.

```javascript
var li = ['a','b','c','d','e'];
li.shift();//a가 제거된다.
```

pop : 제일 의 원소를 제가한다.

```javascript
var li = ['a','b','c','d','e'];
li.pop();//e가 제거된다.
```

데이터 정

```javascript
var li = ['c','e','a','b','d'];
li.sort();//정렬 결과 'a' 'b' 'c' 'd' 'e'
li.reverse();//역순으로 정렬 결과 'e' 'd' 'c' 'b' 'a'
```

**정렬**

배열을 정렬한다.

**문법**

```javascript
array.sort(sortfunc)
```

| 인자명      | 데이터형     | 필수/옵션 | 설명                     |
| -------- | -------- | ----- | ---------------------- |
| sortfunc | function | 옵션    | 원소들 간에 무엇이 우선인지를 판단한다. |

sortfunc에 해당하는 함수를 직접 작성하면 된다.

```javascript
function sortNumber(a,b) {
    //비교 대상인 a와 b가 인자로 전달된다.
    //alert('a :' +a+ ", b: '+b);
    //a에서 b를 뺀 결과가 음수면 a가 b보다 작고, 0이면 같다.
    //sort 메소드는 return 값이 음수, 양수, 0인지에 따라서 순서를 정한다.
    return a-b;
}
var numbers = [20,10,9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber));//array,[1,2,3,4,5,6,7,8,9,10,20]
```

위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.

```javascript
function sortNumber(a,b) {
    return b-a;
}
var numbers = [20,10,9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber));//array,[20,10,9,8,7,6,5,4,3,2,1]
```
