用于判断对象是否为Array的JavaScript方式

时间:2010-05-28 21:38:17

标签: javascript

判断对象是否为数组的“正确”方法是什么?

function isArray(o){   ??? }

6 个答案:

答案 0 :(得分:9)

最好的方法:

function isArray(obj) {
  return Object.prototype.toString.call(obj) == '[object Array]';
}

ECMAScript 5th Edition Specification为此定义了一种方法,some browsers就像Firefox 3.7alpha,Chrome 5 Beta和最新的WebKit Nightly版本已经提供了本机实现,因此您可能希望实现它不可用:

if (typeof Array.isArray != 'function') {
  Array.isArray = function (obj) {
    return Object.prototype.toString.call(obj) == '[object Array]';
  };
}

答案 1 :(得分:1)

您应该可以使用instanceof运算符:

var testArray = [];

if (testArray instanceof Array)
    ...

答案 2 :(得分:1)

jQuery解决了很多这样的问题:

jQuery.isArray(obj)

答案 3 :(得分:0)

这就是我使用的:

function is_array(obj) {
  return (obj.constructor.toString().indexOf("Array") != -1)
}

答案 4 :(得分:0)

function typeOf(obj) {
  if ( typeof(obj) == 'object' )
    if (obj.length)
      return 'array';
    else
      return 'object';
    } else
  return typeof(obj);
}

答案 5 :(得分:0)

您可以对方法Object.isArray()进行测试的Prototype库定义:

function(object) {
  return object != null && typeof object == "object" &&
   'splice' in object && 'join' in object;
}