배열은 객체인 확인하기

배열은 사실 객체라고 하는데, 확인해보기

 

//배열 선언
const arr = [];
//객체 확인
console.log(typeof arr);
object

실제로 타입이 object 것을 있다.

 

객체처럼 다뤄보기1

const funcKey = function() {}
class classKey{}
//배열 객체처럼 다루기 블록 접근
arr['string'] = '리터럴';
arr[{}] = '객체';
arr[[]] = '배열';
arr[()=> 'a'] = '화살표함수';
arr[funcKey] = '함수';
arr[classKey] = '클래스';
console.log(
    Object.entries(arr)
);
[
  [ 'string', '리터럴' ],
  [ '[object Object]', '객체' ],
  [ '', '배열' ],
  [ "()=> 'a'", '화살표함수' ],
  [ 'function() {}', '함수' ],
  [ 'class classKey{}', '클래스' ]
]

배열로 객체이므로, Object.entries() 메서드가 동작한다.

toString() 결과가 key 되고 있다.

 

객체처럼 다뤄보기2

//배열 객체처럼 다뤄보기2, 점 접근
const arr2 = [];
arr2.name = "홍길동";
arr2.age = 10;
console.log(arr2);
[ name: '홍길동', age: 10 ]

 

 

객체처럼 다룬 배열을 배열처럼 사용해보기

console.log(arr.length);
arr.pop();
arr.pop();
arr.unshift();
arr.unshift();
console.log(arr);
0
[
  string: '리터럴',
  '[object Object]': '객체',
  '': '배열',
  "()=> 'a'": '화살표함수',
  'function() {}': '함수',
  'class classKey{}': '클래스'
]

기존 데이터가 배열로 인식을 length 잡히고 있다.

 

arr[9] = 10;
arr[5] = 6;
console.log(arr.length);
console.log(arr.toString());
console.log(arr.join(","));
10
,,,,,6,,,,10
,,,,,6,,,,10

객체라고 가정하고, key 숫자인 경우만 인식하여 동작하고 있다.

 

응용해보기

배열이 객체 관련된 메서드가 적용되므로, 동일한 함수를 만들면 같이 사용이 가능할

//응용해보기
const obj = {};
obj['string'] = '리터럴';
obj[{}] = '객체';
obj[[]] = '배열';
obj[()=> 'a'] = '화살표함수';
obj[funcKey] = '함수';
obj[classKey] = '클래스';
console.log(obj);
console.log("\n\n\n")
//배열과 함수를 받아 순회하는 함수
function each(objOrArr){
    const keys = Object.keys(objOrArr);
    keys.forEach(key => console.log(key, objOrArr[key]));
}
each(arr);
each(obj);


5 6
9 10
string 리터럴
[object Object] 객체
 배열
()=> 'a' 화살표함수
function() {} 함수
class classKey{} 클래스
string 리터럴
[object Object] 객체
 배열
()=> 'a' 화살표함수
function() {} 함수
class classKey{} 클래스

 

결론

배열은 객체처럼 다룰 있다.

객체처럼 쓰는 사람은 없겠지만...

확실하진 않지만, 객체는 요소에 접근할 아마도 해시를 사용할 같고,

배열은 그대로 배열로 만들어 인덱스로 접근하는 같다.

 

 

 

https://ko.javascript.info/array#ref-1135

https://www.udemy.com/course/clean-code-js/  - 배열 - 배열은 객체다.

'개발 > 자바스크립트' 카테고리의 다른 글

구조 분해 할당  (0) 2023.08.21
반올림 함수  (0) 2023.04.10
평균 구하기 주의점  (0) 2023.01.21
자바스크립트 중복제거 - 2  (0) 2022.12.15
자바스크립트 중복 제거  (0) 2022.12.12

+ Recent posts