javascript - 在 Javascript 中测试元素是否为数组

标签 javascript arrays

为了检查一个元素是否是 JavaScript 中的数组,我一直使用 Crockford 的函数(The Good Parts 第 61 页):

var is_array = function (value) {
    return value &&
        typeof value === 'object' &&
        typeof value.length === 'number' &&
        typeof value.splice === 'function' &&
        !(value.propertyIsEnumerable('length'));
}

但如果我没记错的话,最近 Google 的某个人找到了一种测试 JavaScript 数组的新方法,但我就是不记得是从哪里读到的以及函数是如何运行的。

谁能告诉我他的解决方案?


[更新]
显然发现这一点的来自谷歌的人叫做 Mark Miller .

现在我还从 this post 中读到了它他的解决方案也很容易崩溃:

// native prototype overloaded, some js libraries extends them
Object.prototype.toString= function(){
  return  '[object Array]';
}

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

var a = {};
alert(isArray(a)); // returns true, expecting false;

那么,我想问,有什么方法可以真正检查数组的有效性吗?

最佳答案

我相信你正在寻找

Object.prototype.toString.call(value) === "[object Array]";

这是 jQuery 用来检查传递的参数值是函数还是数组对象的方法。在某些浏览器特定实例中,使用 typeof 不会产生正确的结果

关于javascript - 在 Javascript 中测试元素是否为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759375/

相关文章:

javascript - 通过脚本均衡 div - onload vs ondocumentready

java - 如何在Java中将枚举转换为字节数组?

javascript - 数组过滤器的异步或 promise 条件

javascript - 如何通过指定条件访问 javascript 对象

javascript - 在文本框中点击时展开div?

javascript - ctx.filltext 没有显示任何内容?

javascript - 当页面仍在下载时回显字符串

javascript - 如何在 Javascript 中执行 shell 命令

arrays - 如何转换或解析字符串以使用 dateserial VBA Excel

java - 如何使用用户输入的随机整数 x 数量填充数组?