스택큐힙리스트

자바스크립트에서 변수가 배열인지 확인하는 방법은 무엇인가요? 본문

카테고리 없음

자바스크립트에서 변수가 배열인지 확인하는 방법은 무엇인가요?

스택큐힙리스트 2023. 3. 27. 07:58
반응형

자바 스크립트에서 변수가 배열인지 확인하는 방법은 무엇인가요?

if (variable.constructor == Array)

답변 1

변수가 배열인지 확인하는 여러 가지 방법이 있습니다. 최선의 해결책은 당신이 선택한 것입니다.

variable.constructor === Array

이것은 Chrome에서 가장 빠른 방법이며, 아마도 모든 다른 브라우저에서도 그렇습니다. 모든 배열은 객체이므로 생성자 속성을 확인하는 것은 JavaScript 엔진에서 빠른 작업입니다.

객체의 속성이 배열인지 확인하는 문제가 있다면, 먼저 해당 속성이 있는지 확인해야 합니다.

variable.prop && variable.prop.constructor === Array

다른 몇 가지 방법들은 있습니다:

Array.isArray(variable)

2019년 5월 23일 업데이트. Chrome 75를 사용하여 수정하였습니다. @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이 다운되면 다른 테스트를 만들었습니다. 원래 링크는 jsperf가 온라인 상태가 되면 언제든지 유지되도록 하려고했습니다.

답변 2

JavaScript에서 변수가 배열인지 확인하는 방법은 무엇일까요? 이에 대해서 알아보겠습니다.

우선, JavaScript에는 Array.isArray() 함수가 있습니다. 이 함수는 인자로 전달된 변수가 배열인지 아닌지를 Boolean 값으로 반환합니다.

예를 들어, 다음과 같은 코드가 있다고 가정해봅시다.

```

let arr = [1, 2, 3];

let obj = {name: 'John', age: 30};

console.log(Array.isArray(arr));

console.log(Array.isArray(obj));

```

위 코드에서, 첫 번째 줄에서는 arr 변수에 [1, 2, 3] 배열을 할당합니다. 두 번째 줄에서는 obj 변수에 객체를 할당합니다. 마지막 두 줄에서는 각 변수가 배열인지 아닌지를 확인하고, 결과를 콘솔에 출력합니다.

실행 결과는 다음과 같습니다.

```

true

false

```

즉, arr 변수는 배열이므로 true를 반환하고, obj 변수는 배열이 아니므로 false를 반환합니다.

이처럼 JavaScript에서는 Array.isArray() 함수를 사용하여 변수가 배열인지 아닌지를 간단하게 확인할 수 있습니다. 이 함수를 이용하여 프로그래밍할 때, 변수가 배열인지 아닌지를 빠르게 체크하고 적절한 처리를 할 수 있도록 해보세요.

반응형
Comments