티스토리 뷰

객체 <-> 배열

JavaScript는 객체와 배열로 이루어져있는데 정확히 그들의 관계와 의미에 대해 이해가 부족하여 작성하게 되었습니다.
우선, 비교에 앞서 배열과 객체의 기본적인 내용부터 설명하도록 하겠습니다.

객체

다양한 키 컬렉션과 복잡한 엔터티를 저장하는 데 사용되는 것

(첨부: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)

배열

리스트와 비슷한 객체로서 순회와 변형 작업을 수행하는 메서드를 갖는 것

(첨부: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array)

배열은 객체인가 ?

정답부터 말하면 입니다.

자바스크립트의 배열은 일반적인 배열과는 다릅니다. 일반적인 배열은 하나의 타입으로 통일되어 있으며 서로 연속적으로 인접해 있는 배열 밀집 배열(dense array) 입니다. 그래서 인덱스를 통해 배열 요소에 빠르게 접근할 수 있다. 하지만 특정 요소를 탐색하거난 요소를 삽입, 삭제에는 효율적이지 않습니다.
자바스크립트 배열은 배열의 요소가 연속적으로 이어져 있지 않는 희소 배열(sparse array) 입니다. 또한 해시 테이블로 구현된 객체로 인덱스로 요소에 접근하는 경우, 일반적인 배열보다 느리지만 요소 삽입, 삭제 부분에서는 빠른 성능을 가집니다.

객체는 배열인가?

저의 생각을 말해보면 아니다 입니다.

자바스크립트에서 배열은 해시 테이블로 구현된 객체입니다. 또한 객체는 key : value쌍으로 구성된 프로퍼티의 집합으로 되어 있으며 인덱스로 요소에 접근하는 배열과는 다르게 ., [key]으로 접근을 하게 됩니다.

이러한 특성들 때문에 다음과 같은 정답을 얻게 되었습니다.

Ref

https://medium.com/@zac_heisey/objects-vs-arrays-42601ff79421
https://ko.javascript.info/object#:~:text=%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EA%B0%9D%EC%B2%B4%EC%9D%98%20%EC%A4%91%EC%9A%94%ED%95%9C,%EB%A5%BC%20%EC%89%BD%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.
https://poiemaweb.com/js-array-is-not-arrray#:~:text=%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EB%B0%B0%EC%97%B4%EC%9D%80%20%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8%20%EB%B0%B0%EC%97%B4%EC%9D%98%20%EB%8F%99%EC%9E%91%EC%9D%84,%EC%95%84%EB%9E%98%20%EC%98%88%EC%A0%9C%EB%A5%BC%20%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90.&text=%EC%9D%B4%EC%B2%98%EB%9F%BC%20%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%B0%B0%EC%97%B4%EC%9D%80,%EB%8A%94%20%EC%82%AC%EC%8B%A4%20%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0%20%EA%B0%92%EC%9D%B4%EB%8B%A4.
https://developer.mozilla.org/ko/docs/Learn/JavaScript/First_steps/Arrays

반응형
공지사항
최근에 올라온 글