본문 바로가기

웹개발/JavaScript

[CodeIt] 프로그래밍 시작하기 in JavaScript 토픽3(배열)

- 객체의 Property Name이 중요하지 않을 때, 배열로 선언하는 것이 유리합니다. 배열의 원소는 indexing을 통해 접근합니다. 이때, index는 0부터 시작합니다.

ex) course[2]

 

- 배열도 JS에서 이미 존재하는 객체입니다. 따라서 다양한 Property와 메소드를 필요할 때 사용할 수 있어 매우 편리합니다. length 프로퍼티는 배열의 길이를 나타냅니다.

 

- 배열의 존재하지 않은 index에 새로운 값을 할당하려면 members[5]='hi'와 같이 하면 됩니다. 이때, 중간에 건너뛴 index들이 있다면 모두 undefined가 할당됩니다.

 

- 배열의 이미 존재하는 index에 있는 값을 수정하려면 members[5]='hello'와 같이 새로운 값을 할당해주면 됩니다. 

 

- 객체에서는 delete 키워드를 통해 Property를 삭제했지만, 배열에서 delete키워드를 통해 원소를 삭제하면, 값 자체는 지워지지만, 배열의 원소가 그냥 undefined로 바뀝니다. 따라서 배열의 메소드인 splice를 이용해 원소를 삭제해야 합니다.

 

-  members.splice(1)로 값을 하나만 전달하면, 그 index부터 뒷부분을 모두 삭제합니다.

이때, members.splice(1,1)처럼 두번째 인자로 삭제할 갯수를 전달하면, 해당 index부터 그 갯수만큼 삭제합니다.

 

- splice 메소드의 세번째 인자로 값을 전달하면, 삭제된 위치의 인자들이 추가됩니다.

정리하면 splice(startIndex, deleteIndex, item)입니다.

 

- splice에서 삭제할 갯수가 0이면, 그저 새로운 원소를 추가합니다.

 

- 특별한 상황에서 splice보다 간결하게 코드를 작성하는 법이 존재합니다.

배열의 첫 요소를 삭제하는 array.shift(), 배열의 마지막 요소를 삭제하는 array.pop(), 배열의 첫 요소로 값을 추가하는 array.unshift(), 배열의 마지막 요소로 값을 추가하는 array.push()가 있습니다.

 

- array.indexof(item)을 하면 array배열에 item이 포함되어 있다면, item이 index가 반환되고, 없으면 -1이 반환됩니다. 만약 여러 번 포함되어 있으면, 처음 발견된 인덱스가 리턴됩니다.

 

- array.lastIndexOf(item)은 indexOf와 반대로 탐색을 뒤에서부터 해서 여러 번 포함되어 있다면, 가장 마지막 인덱스가 출력됩니다.

 

- array.includes(item)을 하면 array에 item이 있을 경우 true를, 없을 경우 false를 반환합니다.

 

- array.reverse()를 통해 배열의 순서를 뒤집을 수도 있습니다.

 

- for...of 반복문을 통해 변수에 배열의 원소를 순차적으로 할당할 수 있습니다.

 

- 배열에 for...in 반복문을 사용하면 변수에 배열의 index가 할당됩니다. 그런데 for...in문은 객체에 최적화되어 있어서 사용하지 않는 편이 좋습니다.

 

- 배열의 요소로 배열이 올 수도 있습니다. 이러한 배열을 다차원 배열이라고 부릅니다.