如何判断一个对象是否是数组。

  我们知道在js中除了function以外的所有对象如果用typeof来判断的话,它们都显示Object,但是有时候我们并不想这样,比如我判断一个数组就应该是个数组而不是打印Object。

var arr = [];
console.log(typeof arr);  //object

解决方法1:

var arr = [];
console.log(arr.constructor.name==="Array"); //true

解决方法2:

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

解决方法3:

var arr = [];
console.log(Object.prototype.toString.call(arr)==="[object Array]"); //true

在这里我推荐方法3,另外如果你不知道这些方法都是什么意思,可以看一下JS对象的几个方法介绍这篇文章。

如果你有一些基础,那么我给你解释一下方法3是怎么做到的。

  首先toString是obj的属性,我通过构造函数Object的原型改变它的toString方法。如果没有call打印的是prototype,用prototype.toString()打印出来的是Object,然后用call的话会将这个构造函数的this指向这个call里面的第一个参数,通过这样就可以打印它的类型了。

时间: 2024-10-29 16:17:22

如何判断一个对象是否是数组。的相关文章

Javascript判断一个对象是否为数组

从ECMAScript 5.1开始,我们可以使用Array.isArray() 方法来准确判断一个对象是否为数组. 目前主流浏览器均支持该方法(当然不包括IE8). var a = []; Array.isArray(a); // true  var b = ''; Array.isArray(b); // false 在过去,使用如下方式,也可以准确地判断数组,该方法精确有效且兼容性良好: var isArray = function (obj) {     return Object.pro

js判断一个对象是否为数组

1,真正的数组的判断方法 javascript中最简单的声明数组方法为: var a = []; 判断是否为数组的最直接的方法为: 复制代码 代码如下: a instanceof Array //true a .constructor == Array //true 这里涉及到一个instanceof语法,instanceof是一个云算符,与"+-*/"一样,它的语法如下: result = obj intanceof class 是用来判断一个对象是否是某个class的一个实例,运算

判断一个对象是否是数组

在js中用typeof运算符判断数组的类型时,报告是"object",这样看来没有任何意义. 下面用一个很好的方式来区分数组和对象: var is_array = function(value){ return Object.prototype.toString.apply(value) === '[object Array]'; }

java数组反射实现动态的判断一个对象是否是数组并且对数组进行拆包输出

public static Map<String, String> maptoMapString(Map<String, ?> map) { return map.entrySet().stream().collect(Collectors.toMap( (entry) -> { return entry.getKey(); }, (entry) -> { if(entry.getValue().getClass().isArray()) { StringBuilder

判断一个对象是否为数组

var arr=[]; var obj={};console.log(Object.prototype.toString.call(arr) === '[object Array]');//trueconsole.log(Object.prototype.toString.call(obj) === '[object Array]');//falseconsole.log(arr instanceof Array);//trueconsole.log(obj instanceof Array);

怎么判断一个对象是不是数组类型?

前面<变量的赋值和对象的赋值>中有用到typeof运算符去判断运算数的类型,结果如下: alert(typeof 1); // 返回字符串"number" alert(typeof "1"); // 返回字符串"string" alert(typeof true); // 返回字符串"boolean" alert(typeof {}); // 返回字符串"object" alert(typeof

js如何判断一个对象是不是Array?

在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢? typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 1 var arr=new Array("1","2","3","4","5"); 2 alert(typeof(arr)); 你会收到一个object 的答案

JavaScript 的in 操作符 (“如何判断某值是否数组中的元素”?)

在编写JavaScript时,遇到一个常见的问题"如何判断某值是否数组中的元素"?这让我想起了PHP中的in_array()函数和Python中in 操作符.但JavaScript似乎没有内置类似的函数,而其in 操作符的作用也有点不同.通过查询相关的资料,我发现JavaScript的in 操作符还是挺有用的. 一.问题让我想到in 操作符,正是因为这样一个问题:"如何判断某值是否数组中的元素"?在PHP中,您可能会这样来处理: $os = array("

判断某个对象是不是数组

总结<JavaScriptt高级程序设计>中介绍判断某个对象是否是数组的方法. 第一种方法: 使用instanceof操作符.instanceof操作符用来判断要检测对象的原型链上是否存在某个构造函数的prototype属性. 语法: A instanceof B,意思是对象A的原型是否是B.prototype.如果是,返回true,如果不是,返回false. 1 var a={}; 2 var b=[]; 3 console.log(a instanceof Object);//true 4