그래서 변수를 배열입니다 있는지 어떻게 합니까?
주어진 방법은 ecma 표준 클래스를 찾을 수 있는 방법을 사용할 수 있다 '' 에서 '오브ject.프로토티페 객체인지 toString'.
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
'또는' 메리 페로프 테스트하려면 문자열으로 경우 사용할 수 있습니다.
if( typeof someVar === 'string' ) {
someVar = [ someVar ];
}
걱정이 없는 경우 또는 you& # 39, re just do a '성능' 을 새로운 빈 어레이입니다 concat 수 있습니다.
someVar = [].concat( someVar );
if (somevar.constructor.name == "Array") {
// do something
}
철저한 치료를 에서 @T.J. 체크아웃합니다 # 39 의 crowder& 블로그 등 실린 그의 발언은 다음과 같습니다.
[3] 이 [벤치마트] 체크아웃합니다 알 수 있는 방법을 더 뛰어난 성능을 발휘합니다. http://jsben.ch/ # /QgYAV
[@Bharath] [4] 에서 문자열을 사용하여 어레이입니다 Es6 변환하십시오 질문에 대한 질문과대답:
const convertStringToArray = (object) => {
return (typeof object === 'string') ? Array(object) : object
}
예를 들어,:
let m = 'bla'
let n = ['bla','Meow']
let y = convertStringToArray(m)
let z = convertStringToArray(n)
console.log('check y: '+JSON.stringify(y)) . // check y: ['bla']
console.log('check y: '+JSON.stringify(z)) . // check y: ['bla','Meow']
[3]: http://jsben.ch/ # /QgYAV [4]: tab = 프로파일할 https://stackoverflow.com/users/8432239/bharath?
최근의 브라우저에서 할 수 있습니다.
Array.isArray(obj)
(에서 지원하는 크롬, 사파리, 오페라, 파이어폭스 4.0 인터넷 익스플로러 9 와 5 (5)
하위 호환성을 위해 추가할 수 있습니다 다음
# only implement if no native implementation is available
if (typeof Array.isArray === 'undefined') {
Array.isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
};
Jquery 를 사용하는 경우 사용할 수 있습니다 (목표) '또는' '제크리스리자이 $ 스리자이 (목표)'. 밑줄 (목표) '' _.isArray 사용할 경우 사용할 수 있습니다.
obj instanceof Array
jQuery 는 [ui_policytable_java_spe_policy '$ 스리자이 ()'] (http://api.jquery.com/jQuery.isArray/) 방법:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
var a = ["A", "AA", "AAA"];
if($.isArray(a)) {
alert("a is an array!");
} else {
alert("a is not an array!");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
끝 - < 스니핏 >;!
이 경우 아래 어레이입니다 상상할 수도 없다.
var arr = [1,2,3,4,5];
Javascript (신규 및 기존 브라우저):
function isArray(arr) {
return arr.constructor.toString().indexOf("Array") > -1;
}
또는
function isArray(arr) {
return arr instanceof Array;
}
또는
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]';
}
그럼 부르네요 다음과 같습니다.
isArray(arr);
Javascript (,, Saf5+ IE9+ Ch5+ FF4+ Opera10.5+)
Array.isArray(arr);
jQuery:
$.isArray(arr);
각:
angular.isArray(arr);
밑줄 및 로다시:
_.isArray(arr);
[여기에] [1] 로 매든 밝혔습니다.
>. 차별화합니다 오브ject.프로토티페스투스트링스콜 라이드리자이 사용 또는 >. 일반 객체에는 충스러웠으니 어레이에는
다음과 같습니다.
라이드리자이 (도착) '-'
[1]: # Normal_cases https://developer.mozilla.org/en-us/docs/javascript/reference/operators/typeof
내가 있는 객체 유형에 테스트하려면 다루는 함수를 만들 것입니다.
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
function whatAmI(me){ return Object.prototype.toString.call(me).split(/\W/)[2]; }
// tests
console.log(
whatAmI(["aiming","@"]),
whatAmI({living:4,breathing:4}),
whatAmI(function(ing){ return ing+" to the global window" }),
whatAmI("going to do with you?")
);
// output: Array Object Function String
끝 - < 스니핏 >;!
그런 간단한 기술서임을 경우 쓸 수 있다.
if(whatAmI(myVar) === "Array"){
// do array stuff
} else { // could also check `if(whatAmI(myVar) === "String")` here to be sure
// do string stuff
}
이것은 나의 개선 노력을 시도 이 오토메이티드 고려하지 의견:
var isArray = myArray && myArray.constructor === Array;
/ Else if it gets 없앨 가능성이 어레이입니다 nulll 또는 정의되지 않은, 그리고 차지하고 있다.
나는 이 두 개의 다른 방법을 업데이트했는지 [에스페르프 바이올린] [1] 물론 오류 검사.
& # 39 에서 상수 값을 정의할 수 있는 방법을 나타났다 # 39 Object&;; # 39, & # 39 와 Array&. 다른 방법으로 시제품을 어느 때보다 더 빠릅니다. 그것은 다소 놀라운 결과를 얻을 수 있습니다.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
/* Initialisation */
Object.prototype.isArray = function() {
return false;
};
Array.prototype.isArray = function() {
return true;
};
Object.prototype._isArray = false;
Array.prototype._isArray = true;
var arr = ["1", "2"];
var noarr = "1";
/* Method 1 (function) */
if (arr.isArray()) document.write("arr is an array according to function<br/>");
if (!noarr.isArray()) document.write("noarr is not an array according to function<br/>");
/* Method 2 (value) - **** FASTEST ***** */
if (arr._isArray) document.write("arr is an array according to member value<br/>");
if (!noarr._isArray) document.write("noarr is not an array according to member value<br/>");
끝 - < 스니핏 >;!
이 두 가지 방법이 있지만,) 는 변수 값을 사용할 수 없는 일을 정의되지 않은 경우 특정 값을 갖고 있는 경우. 이와 관련해 성능을 고려하여 가치를 확인할 수 있는 경우 또는 단일 값이 두 번째 방법은 배열입니다 looks like a 유효함 빠른 방법입니다. # 39, & # 39 instanceof& 보다 약간 있다. 빨리 에 두 번 크롬, 오페라, 사파리 (Internet Explorer 에서 두 번째로 좋은 방법 (on my machine).
[1]: http://jsperf.com/check-isarray/3 " jsperf";
다음 사용할 수 없는 경우 알잖나 너회의 객체에는 doesn& # 39, concat 메서드입니다.
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -; <! - 언어: > js 랭 -; var 도착 = []; if (= # 39, & # 39 메리 페로프 아리콘카트 function&;) { 콘솔드로그 (# 39 의 오버클로킹된 array" It& ";). } 끝 - < 스니핏 >;!
if (Array.prototype.array_ === undefined) {
Array.prototype.array_ = true;
}
// ...
var test = [],
wat = {};
console.log(test.array_ === true); // true
console.log(wat.array_ === true); // false
이 TL; DR 버전이 있지만, 이 문제를 논의할 수 있도록 큰 아래 기사를 읽어야 할 경우 하게하면서요.
Object.toType = function(obj) {
return ({}).toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
}
// ... and usage:
Object.toType([1,2,3]); //"array" (all browsers)
// or to test...
var shouldBeAnArray = [1,2,3];
if(Object.toType(shouldBeAnArray) === 'array'){/* do stuff */};