순차적
으로 데이터를 저장 (저장된 데이터는 요소라고 불리 운다)순차적으로 저장
할 때 사용 (또는 데이터들이 서로 연결되어 있다 느낄 때 사용)⇒ 위에 언급되어 있듯이 ARRAY는 순차적으로 데이터가 저장되기에 데이터에 순서 값이 정해져 있으며 이걸 Index
라고 부르고 첫 번째 값의 Index
는 0 그리고 맨 마지막 번째는 데이터의 길이보다 1 작거나 혹은 -1 이라고 한다.
이론적으로 자바스크립트의 배열 내에는 다양한 데이터 타입을 삽입할 수 있으나, 타입에러로 발생 할 수 있는 문제를 줄이기 위해 이를 지양한다.
const arr = [1,2,3,4,5]
console.log(arr[2]) // 3
const arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
arr.forEach(function(element) {
console.log(element);
});
const newArr = arr.map(function(element) {
return element * 2;
});
console.log(newArr);
⇒ 중간에 데이터가 삭제 혹은 추가
되는 경우가 많을 경우에는 Array 구조는 적절치 않다.
⇒ 이러한 단점을 해결하기 위해 생긴 자료 구조가 Linked List
이다. 이 것은 Array와는 비슷하지만 다르게 각각의 원소들이 자기 자신의 위치를 자기 자신 다음에 오는 원소가 무엇인지를 기준으로 기억을 하고 있기 때문에 삭제 혹은 추가 후의 처리가 비교적 완만하다. 하지만 이 구조 역시 Array와 다른 점이 발목을 잡아 논리적 저장 순서와 물리적 저장 순서가 일치하지 않기에 특정 원소를 찾는 데 시간이 걸린다...뭐 그렇다고 해서 쓸모없는 자료 구조는 아니기에 기억은 해두자
(Pre-Allocation)
. 만약, 그 이상의 데이터가 들어왔을 경우에는 추가 확장성까지 다시 고려해서 새로운 공간을 만드는데, 이 작업은 부하가 생각보다 무거운 작업이기에 변동성이 큰 데이터를 다루기에는 적합하지 않다.
Array와 Linked List가 비슷한 특성을 가지고 있기 때문에 서로의 비교 대상이 되는데 자세한 비교 내용은 Linked List게시글에서 볼 수 있다.
시간 복잡도는 프로그래머들이 설계한 로직과 데이터 구조에 따라 달라질 수 가 있다. 그렇기 때문에 모든 상황을 고려해서 작성해 놓을 수 없기에 여기에는 내가 찾은 값만 내 기준에 맞춰 작성해보려고 하니 참고 부탁드립니다.