배열과 객체 만 입력 할 수 있습니다. 변수가 배열인지 객체인지를 결정할 수있는 간단한 함수가 있습니까?배열 또는 객체인지 확인하려면 어떻게합니까?
답변
그러나 이것은 하나의 방법입니다 :이 멋진 기능으로 전환 할 수
if ({}.toString.call(obj) == '[object Object]') {
// is an object
}
if ({}.toString.call(obj) == '[object Array]') {
// is an array
}
:
: 이것은 모든 유형의 작동function typeOf(obj) {
return {}.toString.call(obj).match(/\w+/g)[1].toLowerCase();
}
if (typeOf(obj) == 'array') ...
if (typeOf(obj) == 'date') // is a date
if (typeOf(obj) == 'number') // is a number
...
+1의 가치가 있지만,'Object.prototype.toString'을 사용해야합니다. global/window 객체의 toString 메소드가 적절한 결과를 생성하지 않을 수 있습니다. :-) – RobG
나는 그것이 얼마나 많은 브라우저 지원이 필요한지에 달려 있다고 생각한다. 이것은 최신 브라우저 AFAIK에서 작동합니다. 기본값은 객체 인'window.toString'입니다. 그렇지 않으면'{} .toString'을 선호합니다. 하지만 당신 말이 맞아. – elclanrs
Firefox에서 'window.toString.call (obj)'는'[xpconnect wrapped native prototype]'을 반환합니다. 'window'는 호스트 객체이기 때문에 네이티브 객체에 대한 규칙을 따르지 않아야합니다. 또한, [전역 객체] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.1)는 객체의 인스턴스가 아닙니다 ([[Prototype]] 'ECMA-262에 의해 정의 된 속성 중 하나), 다른 객체보다 먼저 존재하는 특별한 객체입니다. – RobG
(variable instanceof Array)
은 배열에 대해 true를 반환합니다.
variable.isArray()
을 사용할 수도 있지만 이전 브라우저에서는 지원되지 않습니다.
당신은 Array.isArray()
를 사용할 수 있습니다
if(Array.isArray(myVar)) {
// myVar is an array
} else {
// myVar is not an array
}
는만큼 당신이 알고있는대로 하나가 설정되어 다른 것입니다. 그것이
instanceof 배열입니다
if(typeof myVar === "object") {
if(Array.isArray(myVar)) {
// myVar is an array
} else {
// myVar is a non-array object
}
}
먼저 선택하면 다음 경우 개체 유형의 : 그렇지 않으면, typeof
과이 결합되어 있습니다.
if(variable instanceof Array)
{
//this is an array. This needs to the first line to be checked
//as an array instanceof Object is also true
}
else if(variable instanceof Object)
{
//it is an object
}
개체가 Array 및 Object의 다른 인스턴스에서 만들어 지므로 프레임을 가로 질러 전달되는 경우 오류가 발생합니다. – RobG
- 1. 배열 또는 객체인지 확인
- 2. SpreadsheetGear에서 수식 또는 계산 오류를 확인하려면 어떻게합니까?
- 3. 이미지가 캐시되지 않도록하려면 어떻게합니까? - 또는 - 서버에 파일이 있는지 확인하려면 어떻게합니까?
- 4. Java가 XML을 JSON으로 변환하고 배열 또는 객체인지 확인하십시오.
- 5. Java 업데이트를 확인하려면 어떻게합니까?
- 6. 레일에서 날짜를 확인하려면 어떻게합니까?
- 7. 백엔드에서 요청을 확인하려면 어떻게합니까?
- 8. 매일 데이터베이스 필드를 확인하려면 어떻게합니까?
- 9. 특정 날짜 형식을 확인하려면 어떻게합니까?
- 10. 인덱스 열에서 정렬을 확인하려면 어떻게합니까?
- 11. 레코드가 이미 있는지 확인하려면 어떻게합니까?
- 12. 함수가있는 Matlab 버전을 확인하려면 어떻게합니까?
- 13. 함수가 그래프를 생성하는지 확인하려면 어떻게합니까?
- 14. 소켓이 연결된 대상을 확인하려면 어떻게합니까?
- 15. 필드에 값이 없음을 확인하려면 어떻게합니까?
- 16. 하루에 하나의 게시물을 확인하려면 어떻게합니까?
- 17. LINQ에서 이전 데이터를 확인하려면 어떻게합니까?
- 18. 배열의 데이터 유형을 확인하려면 어떻게합니까?
- 19. Ruby에서 RVM 버전을 확인하려면 어떻게합니까?
- 20. 하위 뷰를 터치했는지 확인하려면 어떻게합니까?
- 21. 문자가 문자열에 있는지 확인하려면 어떻게합니까?
- 22. 특정 위치에있는 물체를 확인하려면 어떻게합니까?
- 23. ADOdb에서 에뮬레이트 된 준비 문을 확인하려면 어떻게합니까?
- 24. 배열의 모든 요소에 대한 조건을 확인하려면 어떻게합니까?
- 25. 요소가 목록 또는 다른 객체인지 확인
- 26. 유형이 원시인지 또는 유형이 객체인지 확인하십시오
- 27. 단어에 문자 또는 문자 그룹이 포함되어 있는지 확인하려면 어떻게합니까?
- 28. 자바에서 문자열에 1 또는 0 만 포함되어 있는지 확인하려면 어떻게합니까
- 29. 안드로이드 장치가 자연스럽게 가로 또는 세로인지 확인하려면 어떻게합니까?
- 30. NTAccount 개체가 그룹 또는 사용자를 나타내는 지 확인하려면 어떻게합니까?
이것을 확인하셨습니까? - http://stackoverflow.com/questions/8834126/how-to-efficiently-check-if-variable-is-array-or-object-in-nodejs-v8 –
http://blog.niftysnippets.org/2010 /09/say-what.html .. – alwaysLearn