배열(Array)은 데이터를 일렬로 저장하고, 각 데이터에 인덱스를 부여하여 접근할 수 있는 자료구조입니다. 자바스크립트에서 '[]' 기호를 사용하여 배열을 생성하며, 배열 요소는 쉼표로 구분하여 나열합니다.
let arr = [1,2,3,4];
console.log(arr); //[ 1, 2, 3, 4 ]

arr = [1,"아이스아메리카노", {total : 90}];

console.log(arr); // [ 1, '아이스아메리카노', { total: 90 } ]

const fruits = ['apple', 'banana', 'orange'];
console.log(fruits[0]); // 'apple'
console.log(fruits[1]); // 'banana'
console.log(fruits[2]); // 'orange'

배열은 동일한 자료형의 데이터를 순서대로 저장하는데 유용합니다. 배열은 크기를 동적으로 조절할 수 있으며, 다양한 메서드를 제공하여 배열의 요소를 추가, 제거, 정렬, 검색하는 등 다양한 작업을 수행할 수 있습니다.

자바스크립트에서 배열은 객체(Objedct)의 일종으로, 다양한 프로퍼티와 메서드를 가지고 있습니다. 이러한 특징으로 인해 배열은 다른 자로구조와 결합하여 사용될 수도 있습니다. 예를 들어, 객체를 요소로 가지는 배열, 배열을 요소로 가지는 배열 등을 만들어서 사용할 수 있습니다.


장점
  • Index를 이용해 빠른 데이터 접근이 가능
  • 데이터의 크기가 확정적일 떄 배열을 사용하여 메모리를 최적으로 관리

단점

  • 메모리 할당 시 고정된 크기로 확장성이 떨어짐
  • 삽입 및 삭제 시 데이터 위치를 이동 시켜야 함

배열(Array)은 일반적으로 연속된 인덱스를 가진 데이터를 저장하기 위해 사용됩니다. 이때, 배열의 인덱스가 모두 채워져 있는 경우를 "밀집 배열(Dense Array)"이라고 하고, 그렇지 않은 경우를 "희소 배열(Sparse Array)"이라고 합니다.

밀집 배열은 각 인덱스마다 값이 존재하기 때문에 메모리 공간을 효율적으로 사용할 수 있습니다. 이와 달리, 희소 배열은 일부 인덱스만 값이 존재하기 때문에 메모리 공간을 불필요하게 사용하게 됩니다. 예를 들어, 다음과 같은 배열이 있다고 가정해보겠습니다.

const denseArray = [1, 2, 3, 4, 5];
const sparseArray = [1, 2, , , 5];

위의 denseArray는 모든 인덱스에 값이 존재하는 밀집 배열이고, sparseArray는 일부 인덱스에만 값이 존재하는 희소 배열입니다. sparseArray의 경우 2번째와 3번째 인덱스에 값이 없으므로, 메모리 공간이 낭비되게 됩니다.

밀집 배열과 희소 배열은 메모리 공간 외에도 성능 차이를 가지고 있습니다. 일반적으로 밀집 배열은 인덱스를 이용한 접근이 빠르고, 반면에 희소 배열은 순회(Iteration)를 이용한 접근이 빠르게 수행됩니다. 이는 희소 배열에서는 비어있는 인덱스를 건너뛰어야 하기 때문입니다.

따라서, 배열의 크기와 요소들의 특성에 따라 밀집 배열과 희소 배열 중 어떤 것을 선택할 것인지를 고려해야 합니다. 예를 들어, 특정 요소의 유무가 불확실하거나 크기가 큰 배열의 경우 희소 배열을 사용하는 것이 메모리를 절약할 수 있습니다. 반면에, 인덱스를 기반으로 빠른 접근이 필요한 경우에는 밀집 배열을 사용하는 것이 더 효율적일 수 있습니다.

JavaScript 배열과 기존 배열과 비교 시 장/단점

장점

  • 하나의 배열에서 다양한 타입의 데이터를 사용 가능(key, value구조)
  • 삽입 및 삭제 시 기존 배열보다 빠른 성능을 보임

단점

  • 동일한 배열의 크기 생성 시 기존 배열보다 메모리 사용량이 큼
  • 기존 배열보다 느린 인덱싱 성능을 보임(메모리의 파편화)

배열과 내장함수
let arr = [1,2,3,4];
console.log(arr);// [ 1, 2, 3, 4 ]

for(const [key, value] of arr.entries()){
    console.log(`key : ${key}, value : ${value} `);
}
// key : 0, value : 1 
// key : 1, value : 2 
// key : 2, value : 3 
// key : 3, value : 4 

arr.push('데이터')
console.log(arr); //[ 1, 2, 3, 4, '데이터' ]

arr.pop();
console.log(arr); //[ 1, 2, 3, 4 ]

arr.push('데이터');

console.log(arr);// [ 1, 2, 3, 4, '데이터' ]

arr.shift();
console.log(arr); // [ 2, 3, 4, '데이터' ]

console.log(arr.indexOf('데이터')); // 3

let arr2 = arr.filter((data) => data >1);
console.log(arr2); //[ 2, 3, 4 ]

let arr3  = arr.concat([5,6,7]);
console.log(arr3); // [ 2, 3, 4, '데이터', 5, 6, 7 ]
console.log(arr); // [ 2, 3, 4, '데이터' ]

arr.pop();
console.log(arr); // [ 2, 3, 4 ]

arr = arr.map((data) => data/2);

console.log(arr); // [ 1, 1.5, 2 ]
profile
신은 인간에게 선물을 줄 때 시련이라는 포장지에 싸서 준다. 선물이 클수록 더 큰 포장지에 싸여있다. - 브라이언 트레이시 -

0개의 댓글