질문 : JavaScript에서 변수가 배열인지 어떻게 확인합니까?
변수가 JavaScript에서 배열인지 단일 값인지 확인하고 싶습니다.
가능한 해결책을 찾았습니다 ...
if (variable.constructor == Array)...
이것이 최선의 방법입니까?
답변
ㅁㅁ
변수가 배열인지 확인하는 방법에는 여러 가지가 있습니다. 최상의 솔루션은 선택한 솔루션입니다.
variable.constructor === Array
이것은 Chrome 및 대부분의 다른 모든 브라우저에서 가장 빠른 방법입니다. 모든 배열은 객체이므로 생성자 속성을 확인하는 것은 JavaScript 엔진의 빠른 프로세스입니다.
객체 속성이 배열인지 확인하는 데 문제가있는 경우 먼저 속성이 있는지 확인해야합니다.
variable.prop && variable.prop.constructor === Array
다른 방법은 다음과 같습니다.
Array.isArray(variable)
Chrome 75를 사용하여 2019 년 5 월 23 일 업데이트하고 @AnduAndrici에게 그의 질문으로 다시 방문하게 해달라고 외칩니다. 이 마지막 질문은 제 생각에 가장 추하고 가장 느린 것 중 하나입니다. 첫 번째 예로 약 1/5의 속도를 실행합니다. 이 사람은 약 2-5 % 느리지 만 말하기는 꽤 어렵습니다. 사용하기에 견고합니다! 결과에 깊은 인상을 받았습니다. Array.prototype은 실제로 배열입니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray에서 자세한 내용을 읽을 수 있습니다.
variable instanceof Array
이 방법은 첫 번째 예와 같이 약 1/3의 속도로 실행됩니다. 여전히 꽤 견고하고 깨끗해 보입니다. 만약 당신이 성능에 그다지 많은 것이 아니라 예쁜 코드에 관한 것이라면. 숫자를 확인하는 것은 variable instanceof Number
false
반환합니다. 업데이트 : instanceof
이제 2/3 속도로 이동합니다!
그래서 또 다른 업데이트
Object.prototype.toString.call(variable) === '[object Array]';
이 사람은 배열을 확인하는 데 가장 느립니다. 그러나 이것은 당신이 찾고있는 모든 유형에 대한 원 스톱 상점입니다. 그러나 배열을 찾고 있으므로 위의 가장 빠른 방법을 사용하십시오.
또한 몇 가지 테스트를 실행했습니다. http://jsperf.com/instanceof-array-vs-array-isarray/35 그러니 재미있게보고 확인해보세요.
참고 : @EscapeNetscape는 jsperf.com이 다운됨에 따라 또 다른 테스트를 생성했습니다. http://jsben.ch/#/QgYAV jsperf가 온라인으로 돌아올 때마다 원래 링크가 유지되도록하고 싶었습니다.
출처 : https://stackoverflow.com/questions/767486/how-do-you-check-if-a-variable-is-an-array-in-javascript
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
Chrome sendrequest 오류 : TypeError : Converting circular structure to JSON (0) | 2021.07.29 |
---|---|
node.js에서 파일을 한 번에 한 줄씩 읽는 방법 (0) | 2021.07.29 |
HTML 마크업에서 [script] 태그의 올바른 위치 (0) | 2021.07.29 |
JavaScript에서 큰 따옴표 또는 작은 따옴표 사용 시기 (0) | 2021.07.28 |
HTML에서 ID와 name 속성의 차이점 (0) | 2021.07.28 |