이 기사에서는 객체가 배열인지 확인하는 세 가지 JavaScript 방법을 공유합니다.
1. 유형
가장 먼저 생각해 볼 것은 데이터 유형을 감지하기 위해 typeof를 사용하는 것이지만 Function, String, Number, Undefine 등과 같은 기본 유형의 경우 typeof를 사용하여 감지할 수 있습니다. 다음과 같습니다:
function test(){} console.log(typeof 1); // number console.log(typeof test); // function console.log(typeof "yunxi"); // string console.log(typeof undefined); // undefined
그러나 배열이나 정규 표현식의 경우 typeof를 사용하여 감지하는 것은 만족스럽지 않습니다. 왜냐하면 배열이나 정규 표현식을 감지하면 다음 코드에 표시된 것처럼 반환된 유형이 객체가 되기 때문입니다.
console.log(typeof []); // object console.log(typeof /\d+/g); // object
2.인스턴스
이를 통해 객체가 배열의 인스턴스인지 여부를 감지하기 위해 objectof를 사용하는 것을 쉽게 생각할 수 있습니다. 이 감지는 배열인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. at it again 배열인지 여부를 감지하는 위의 코드는 다음과 같습니다.
console.log([] instanceof Array); // true console.log(/\d+/g instanceof Array); // false
위에서 볼 수 있듯이, instanceof를 사용하면 실제로 배열 요소인지 확인할 수 있습니다.
3. 생성자 속성
자바스크립트에서 각 객체에는 생성자 속성이 있는데, 이는 알 수 없는 객체의 유형을 결정하는 등 객체를 초기화하는 생성자를 참조하므로 다음과 같은 메소드를 작성할 수 있으며, 코드는 다음과 같습니다.
function isArray(obj) { return typeof obj == 'object' && obj.constructor == Array } // 测试demo console.log(isArray([])); // true var a = {"a":1}; console.log(isArray(a)); // false var b = [1,2,3]; console.log(isArray(b)); // true console.log(isArray(/\d+/g));// false
위에서 볼 수 있듯이 isArray 메소드를 호출하여 배열 요소인지 여부를 확인할 수도 있습니다.
이제 두 번째와 세 번째 점에 대해 각각 instanceof 메서드와 생성자 속성을 사용하면 배열인지 여부를 확인할 수 있는 것으로 보이지만 페이지에서 배열을 사용할 때 십자가를 사용할 때와 같은 예외도 있습니다. -frame iframe.은 서로 다른 iframe에서 생성된 배열이 프로토타입 속성을 서로 공유하지 않기 때문에 실패합니다. 다음 코드 테스트를 통해 확인할 수 있습니다.
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); //这个写法IE下是不支持的,标准浏览器firefox,chrome下有 console.log(arr); // 打印出 ["1", "2", "3", "4", "5"] console.log(arr instanceof Array); // false console.log(arr.constructor === Array); // false
Object.prototype.toString.call() 메소드 를 사용할 수 있음을 알 수 있습니다. 객체가 배열인지 확인하려면 다음 코드를 사용하세요.
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } // 代码调用 console.log(isArray([])); // true console.log(isArray([1,2,3])); // true var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); console.log(arr); // ["1","2","3","4","5"] console.log(isArray(arr)); // true