JavaScript의 배열에 대한 간단한 소개

배열은 JavaScript 및 거의 모든 언어에서 가장 많이 사용되는 데이터 구조 중 하나입니다. 오늘 저는 그것들이 무엇인지, 무엇을 하는지, 언제 사용하는지에 대해 이야기할 것입니다.

그래서 그것을 얻을 수 있습니다!

배열이란 무엇입니까?



먼저 배열에 대해 이야기하겠습니다. 이는 대부분의 프로그래머에게 익숙한 데이터 구조로, 아래와 같이 데이터를 순차적으로 구성합니다.

let basket = ['🥧', // 0 index
              '🍤', // 1st index
              '🍇', // 2nd index
              '🍒', // 3rd index
              '🍏', // 4th index
              '🍎'] // 5th index


아주 간단하죠? 배열은 메모리에 연속되는 작고 간단한 데이터 구조이기 때문에 정말 좋습니다. 즉, 각 값이 서로 바로 옆에 저장되므로 데이터를 저장하기 위해 많은 공간을 할당할 필요가 없습니다. 또한 JavaScript에서 배열은 크기 조정이 가능하고 본질적으로 동적입니다. 미리 정의된 크기가 있는 다른 언어의 정적 배열과 달리 값을 더 추가할 수 없습니다. 대신 정적 배열의 경우 본질적으로 완전히 새로운 배열을 생성하는 크기를 늘리기 위해 배열을 메모리의 다른 위치로 이동해야 합니다.

배열 방법



배열을 사용할 때 시간 복잡도가 다양한 몇 가지 일반적인 방법은 다음과 같습니다.



  • Access the i-th Element O(1) - Constant Time: Since we are essentially accessing the the key: which is the index and the value which is the data stored in that index.
  • Search O(n) - Linear Time: Since we have to use the index to access the value we wont be able to just instantaneously access a value and instead we will have to loop through n items of the array to get a certain value.
  • Override the Element at i-th index O(1) - Constant Time: Similar to accessing the i-th Element all it takes is using the key: index to change the value at a certain index.
  • Traverse All Elements O(n) - Linear Time: Looping through each element is similar to searching so we will be going through however many n items are in the array.
  • Insertion O(n)* - Linear Time: Order matters in an array so if you insert an element in any index that isn't the last index you will have to shift the indexes after and increase their index number by 1. The act of shifting the indexes increases the time complexity to O(n) items needing to be shifted.
  • Deletion O(n)* - Linear Time: Similar to above except you will have to shift the indexes after by decreasing their number by 1.

*Note - You do not have to shift the indexes if you are inserting to the end of the array or deleting the last index.



보시다시피 배열에 대한 다양한 유형의 메소드에 대해 다양한 유형의 시간 복잡도가 있습니다. 그러나 마지막 두 항목인 삽입 및 삭제에서 알 수 있듯이 배열의 마지막 인덱스가 다릅니다. JavaScript에서 이것은 메소드에 대한 두 가지 매우 특별한 이름이 있다는 사실에서도 분명합니다.

basket.push()



basket.pop()


이름에서 알 수 있듯이 pop()은 배열의 끝에서 인덱스를 삭제하여 크기를 줄입니다. push()는 크기를 늘리는 배열 끝에 추가됩니다. 둘 다 일정한 시간입니다.

JavaScript 배열은 언제 사용합니까?



카드 한 벌이 있다고 상상해보세요.



데크의 끝에서만 카드를 가져오는 카드 게임을 만드는 경우 배열을 사용하는 것이 좋습니다. 이렇게 하면 pop() 및 push()의 O(1) 시간 복잡도를 활용하여 데크 맨 위에서 카드를 가져올 수 있습니다. 또한 카드 한 벌에서 카드를 넣는 순서가 중요하므로 배열의 인덱스로도 표시됩니다.

결론적으로



JavaScript 배열을 사용하면 서로 다른 데이터 유형과 순서가 있는 연속적인 메모리를 저장할 수 있습니다. 인덱스 이동으로 인해 삽입 및 삭제와 관련하여 약간의 장단점이 있지만. 빠른 조회 및 인덱스 변경 기능이 있습니다. 또한 나중에 이야기할 더 복잡한 데이터 구조의 구성 요소가 될 수도 있습니다.

좋은 웹페이지 즐겨찾기