String, Number, Object 들과 달리 Array는 typeof 를 이용하여 타입을 알아보면 Object라고 뜨게된다. 그 이유는 Javascript에서는 Array를 Object로 취급하기 때문이다.
const arr = [1,2,3,4,5]
console.log(typeof arr) //"object"
const null = null
console.log(typeof null) //"object" object라니?
그렇다면, Array를 판별할 수 있는 방법은 무엇이 있을까?
instanceof Array
instanceof는 앞에 있는 객체의 프로토타입 체인이 뒤에있는 constructor.prototype에 존재하는지 아닌지 판별하여 Boolean (true/false)으로 리턴한다. 마찬가지로 Array는 Object이기에 정확하게 판단할 수 없다.
const arr = [1,2,3,4,5]
console.log(arr instanceof Array) //true
console.log(arr instanceof Object) //true (Array는 Object...)
정확하게 판별하고 싶다면? 어떻게 해야할까?
Object.prototype.toString
https://ko.javascript.info/instanceof
Object의 내장 toString을 사용한다면 타입을 판별할 수 있다.
const arr = [];
const obj = {};
const num = 1;
const str = '';
const typeUndefined = undefined;
const typeNull = null
const bool = true;
console.log(Object.prototype.toString.call(arr)); // [object Array]
console.log(Object.prototype.toString.call(obj)); // [object Object]
console.log(Object.prototype.toString.call(num)); // [object Number]
console.log(Object.prototype.toString.call(str)); // [object String]
console.log(Object.prototype.toString.call(typeUndefined)); // [object Undefined]
console.log(Object.prototype.toString.call(typeNull)); // [object Null]
console.log(Object.prototype.toString.call(bool)); // [object Boolean]
좀 더 직관적인 방법은 없을까?
Array.isArray()
위의 메서드를 이용하면 직관적이면서, 정확하게 판별할 수 있다!
const arr = [1,2,3,4,5]
console.log(Array.isArray(arr)) //true
혹여라도, 잘못된 정보가 있다면 따끔한 충고 부탁드립니다. 😵💫
'📝 꾸준함이 무기 > JavaScript' 카테고리의 다른 글
중첩배열을 평탄화시켜주는 flat, flatMap (0) | 2022.08.02 |
---|---|
Blob(Binary Large Objects) (0) | 2022.04.23 |
13가지 유용한 자바스크립트 배열 팁과 정보 (2) | 2021.10.21 |
비동기처리 AJAX : JQuery의 ajax (0) | 2021.05.24 |
형 변환 (0) | 2021.05.10 |