判断是否为数组 ---附有源码-前端-E先生的博客
Java
MySQL
大数据
Python
前端
黑科技
大语言模型
    首页 >> 互联网 >> 前端

判断是否为数组 ---附有源码

[导读]:方法一: 使用instanceof方法instanceof 用于判断一个变量是否某个对象的实例,左边操作数是一个对象,右边操作数是一个函数对象或者函数构造器。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。a instanceof b?alert(“true”):alert(“false”) //注意b值是你想要判断的那种数据类型...

方法一: 使用instanceof方法

instanceof 用于判断一个变量是否某个对象的实例,左边操作数是一个对象,右边操作数是一个函数对象或者函数构造器。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。

a instanceof b?alert(“true”):alert(“false”) //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array。

举一个例子:

var arr=[];
console.log(arr instanceof Array) //返回true

方法二: 使用constructor方法

在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的。

那么判断各种类型的方法:

console.log([].constructor == Array);  //true
console.log({}.constructor == Object);  //true
console.log("string".constructor == String); //true
console.log((123).constructor == Number);  //true
console.log(true.constructor == Boolean);  //true

方法三: 使用Object.prototype.toString.call(arr) === '[object Array]'方法

function isArray(o) {
  return Object.prototype.toString.call(o);
}
var arr=[2,5,6,8];
var obj={name:'zhangsan',age:25};
var fn = function () {}
console.log(isArray(arr)); //[object Array]
console.log(isArray(obj)); //[object Object]
console.log(isArray(fn));  //[object function]

方法四:ES5定义了Array.isArray:

image.png

let arr = []
console.log(Array.isArray(arr))	//true

if (Array.isArray(obj[key])) {

}

方法五:

Array原型链上的isPrototypeof

Array.prototype表示Array的构造函数的原型

isPrototypeof()方法可以判断一个对象是否存在另一个对象的原型链上

let arr = []
console.log(Array.prototype.isPrototypeof(arr))//true

方法六:

Object.getPrototypeOf() 方法返回指定对象的原型,然后和Array的原型对比

let arr = []
console.log(Object.getPrototypeOf(arr) == Array.prototype)//true


本文来自E先生的博客,如若转载,请注明出处:https://www.javajz.cn

留言区

联系人:
手   机:
内   容:
验证码:

历史留言

欢迎加Easy的QQ