개체가 배열인지 확인하려면 어떻게해야합니까?[복제하다]


질문

 

문자열 목록이나 단일 문자열을 수락하는 함수를 작성하려고합니다.문자열이라면 하나의 항목 만있는 배열로 변환하여 오류가 두려워하지 않고도 반복 할 수 있습니다.

변수가 배열인지 확인하려면 어떻게해야합니까?


답변

 

객체 클래스를 찾기 위해 ECMAScript 표준에 주어진 방법은 object.prototype에서 toString 메서드를 사용하는 것입니다.

if(Object.prototype.toString.call(someVar) === '[object Array]') {
    alert('Array!');
}

또는 문자열인지 테스트하려면 TypeOf를 사용할 수 있습니다.

if(typeof someVar === 'string') {
    someVar = [someVar];
}

또는 성능에 대해 염려하지 않으면 새로운 빈 배열에 대한 Concat을 수행 할 수 있습니다.

someVar = [].concat(someVar);

또한 쿼리 할 수있는 생성자도 있습니다.

if (somevar.constructor.name == "Array") {
    // do something
}

T.J에서 철저한 치료를 확인하십시오.Crowder의 블로그는 아래의 그의 의견에 게시되었습니다.

이 벤치 마크를 확인하여 어떤 방법이 더 잘 수행되는지 아이디어를 얻으십시오. http://jsben.ch/#/qgyav

@bharath에서 묻는 질문에 대해 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']


답변

현대 브라우저에서는 할 수 있습니다 :

Array.isArray(obj)

(Chrome 5, Firefox 4.0, Internet Explorer 9, Opera 10.5 및 Safari 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를 사용하는 경우 jquery.isarray (obj) 또는 $ .isarray (obj)를 사용할 수 있습니다.Underscore.js를 사용하는 경우 _.isarray (obj)를 사용할 수 있습니다.

다른 프레임에서 생성 된 배열을 탐지 할 필요가없는 경우 instanceof를 사용할 수도 있습니다.

obj instanceof Array


답변

처음에는 구현이 IsArray를 지원하는지 확인합니다.

if (Array.isArray)
    return Array.isArray(v);

instanceOf 연산자를 사용해 볼 수도 있습니다

v instanceof Array


답변

jQuery는 $ .isarray () 메서드를 제공합니다.

var a = [ "a", "aa", "aaa"]; if ($. Isarray (a)) { 경고 ( "A는 배열입니다!"); } 또 다른 { 경고 ( "A는 배열이 아닙니다!"); }

이것은 모든 메소드 (모든 브라우저가 지원) 중 가장 빠릅니다.

function isArray(obj){
    return !!obj && obj.constructor === Array;
}


답변

아래 에이 배열이 있어야합니다.

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 (Internet Explorer 9+, 크롬 5+, Firefox 4+, Safari 5+ 및 Opera 10.5+)

Array.isArray(arr);

jQuery :

$.isArray(arr);

모난:

angular.isArray(arr);

Underscore.js 및 Lodash :

_.isArray(arr);
출처:https://stackoverflow.com/questions/4775722/how-can-i-check-if-an-object-is-an-array