프로그래밍 언어/HTML,CSS,JS

JavaScript에서 변수가 배열인지 확인 하는 방법

Rateye 2021. 7. 29. 09:49
728x90
반응형

 

질문 : 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
728x90
반응형