美文网首页
如何判断一个值是不是数组

如何判断一个值是不是数组

作者: xiaoyoo | 来源:发表于2019-03-19 18:04 被阅读0次

1、instanceof

instanceof 运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上。对于一个网页或者一个全局作用域,用这个就可以。

原理:

判断实例对象的 proto属性与构造函数的prototype属性是不是同一个引用

if (value instanceof Array) {
 // 是数组返回true 不是返回false
}

缺点

它是假定只有一个全局执行环境。
当网页中使用多个框架,就会有两个及以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个人框架中原生创建的数组分别具有各自不同的构造函数。

var isArray = value instanceof Array;

以上代码要返回 true, value 必须是一个数组,而且还必须与 Array 构造函数在同个全局作用域中。(别忘了,Array 是 window 的属性。)如果 value 是在另个 frame 中定义的数组,那么以上代码就会返回false。

2、Array.isArray() ES5新增 通用

if ( Array.isArray(value) ) {
   // 是数组返回true 不是返回false
}

支持 Array.isArray()方法的浏览器有 IE9+、 Firefox 4+、 Safari 5+、 Opera 10.5+和 Chrome。

3、Object.prototype.toString.call(value)

if (Object.prototype.toString.call(value) === "[object Array]") {
  // 是数组返回true 不是返回false
}

原理
在任何值上调用 Object 原生的 toString()方法,都会返回一个[object NativeConstructorName]格式的字符串。每个类在内部都有一个[[Class]]属性,这个属性中就指定了上述字符串中的构造函数名。

相关文章

  • 如何判断一个值是不是数组

    1、instanceof instanceof 运算符用来判断一个构造函数的prototype属性所指向的对象是否...

  • 关于sort排序

    假定有2个数组,想要判断数组A是不是数组B的解 比如:数组A的值:$a = ['a', 'b'];数组B的值:$b...

  • 在JavaScript如何判断对象是否为数组类型

    如何用js判断一个对象是不是Array 调用数组的isArray方法:Array.isArray(obj); 判断...

  • 原型和原型链

    原型和原型链 题目 1.如何准确判断一个变量是不是数组? 答:用 a(变量)instanceof Array(数组...

  • JavaScript Array 再次学习数组

    判断数组 Array.isArray() Array.isArray方法用来判断一个值是否为数组返回布尔值,比ty...

  • empty 和 isset

    empty 判断变量的值或者数组是不是空 为空返回true,不为空返回false $str的值为 0 '0' ''...

  • js数组对象或数组常用操作

    找相同 去重 找选中和未选中 js 判断数组的对象中是否有某个值 js如何判断对象数组中是否存在某个对象

  • 利用协议实现类型判断

    首先看一个例子判断是不是数组 打印的结果如下: 如果要判断是不是数组是不是数组类型呢?假如还仿照上面的写法 打印结...

  • 数组溢出

    今天写了个判断数组中数据的最大值问题的代码,发现了一个有趣的情况,数组溢出值总是一个; 现附上今天写的判断数组最大...

  • Python isinstance和type

    问题 如何判断变量是不是None或者numpy数组 解决 Python 中有 isinstance 和 type ...

网友评论

      本文标题:如何判断一个值是不是数组

      本文链接:https://www.haomeiwen.com/subject/ktmnmqtx.html