一,判断数组的方法

首先需要明确的是typeof在判断[],{},null时返回的都是 object,所以是无法判断数组和对象的。
1,常用的方法是:instanceof

表达式:A instanceof B
返回值:如果B函数的显示原型对象(prototype)在A对象的原型链(__proto__)上,返回true,否则false
var arr=[1,2,3]
var b={}
console.log(arr instanceof Array)  //true
console.log(b instanceof Object)   //true
console.log(arr instanceof Object)  //true  因为arr的原型链必然包含Object的原型对象,或者说所有对象都是Object的实例//于是又可以引申出另一种写法:
console.log(arr.__proto__.constructor === Array )
console.log(arr.__proto__=== Array.prototype )

所以说,它可以用来判断是不是数组,而判断不了是不是对象。
但是如果存在多个全局执行环境,就会存在多个不同版本的Array构造函数了,这种办法就会失效,使用下一种:
2,Array.isArray(arr)
不管arr是在哪个全局环境定义的,一旦是数组则返回true,否则false.

Array.isArray([]) // true
Array.isArray({}) // false

3,constructor

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

4,toString

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

二,判断是否对象的方法

1、toString(推荐)

Object.prototype.toString.call(obj) === '[object Object]'
//Object原型对象上的toString方法是可以判断类型的。利用call把指针指向obj,也就是调用这个toString方法来判断obj

2、constructor

obj.constructor === Object

js基础-12-判断数组和判断对象的方法相关推荐

  1. js中判断空数组和空对象的方法

    复习的时候做一些学习的笔记总结. javascript的值的类型: 原始值:number.string.boolean.undefined.null.symbol(ES6).bigint(ES10) ...

  2. JS基础:变量、函数、对象、数组、循环、选择(判断)

    JS基础:变量.函数.对象.数组.循环.选择(判断) js的三个组成部分 ECMAScript - ES - 语法规范 DOM - 文档对象模型 - API BOM - 浏览器对象模型 - API j ...

  3. 3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组

    3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景 一.当数组中的数据是简单类型时: 应用js中的indexof方法:存在则返回当前项索引,不存在则返回 ...

  4. js,根据一个数组,遍历对象数组,进行多条件并列的筛选或过滤

    js,根据一个数组,遍历对象数组,进行多条件并列的筛选或过滤 1. 筛选是否 2. 筛选特定值 多条件并列:某一条数据的两个以上的属性,同时满足筛选条件 1. 筛选是否 业务场景:返回一个对象数组,在 ...

  5. php判断几维数组的方法,php判断数组是几维的方法

    php判断数组是几维的方法:首先创建一个PHP示例文件:然后定义一个foreachArray方法:接着通过"is_array"函数检测变量是否是一个数组:最后通过循环遍历的方法判断 ...

  6. JS JavaScript中去除数组中重复元素的方法

    JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...

  7. JS中有没有简单的判断数组是否为空的方法

    直接判断数组的长度是否为0 利用布尔值判断 数组为object,直接用if(a)判断的话都是为true,可以用数组的长度去直观判断是否为空 将数组和布尔类型都转化为Number类型比较,空数组转化为N ...

  8. 判断数组里面的对象是否相同与不相同

    const newList=[] for(const t of this.tableData){if(newList.find(c => c.goodsFeeModeId === t.goods ...

  9. 【JS基础】Array数组的创建与操作方法

    本文参考:<JS高级程序设计>(红宝书). JS数组的独特性 JS中Array类型属于引用类型,是除了Object之外最常用的类型. JS的数组与其他语言的数组有着相当大的区别,它十分灵活 ...

  10. php if为空那么,PHP中判断数组是否为空的方法

    PHP中判断数组为空的方法有好几种,但当遇到判断多维数组时,这些方法都无法判别数组是否为空,现在下面先介绍从网上搜索到判断一维数组的方法. PHP判断数组为空之一.for循环 最简单也是最直接的方法, ...

最新文章

  1. 网络推广产品浅析网站想要保持稳定的SEO排名和流量需要做什么?
  2. c语言考试题及答案 大一,大一C语言期末考试试题
  3. 【Jmeter篇】Jmeter踩坑记(一)
  4. MySQL 双主单写,主库偶尔出现大量延迟的原因
  5. 计算机网络的结构之Internet结构
  6. 数据结构--数组+链表实现哈希表
  7. Flash版Logo语言9.83
  8. 牛客练习赛28 E【斜抛运动的最大水平射程】
  9. go语言编程前景怎么样?国内Go语言布道师许式伟这样说
  10. 同义词转换不再有效_中考英语丨初中英语句型转换大全
  11. Verilog编写VGA控制器
  12. 电商、数字化下的中国书店
  13. HTML的relative与absolute区别
  14. IT6801FN图像质量调优
  15. vue form表单验证清除
  16. 码云gitee 部署公钥匙
  17. Unity在UGUI上使用Polygon Collider 2D实现不规则图案匹配
  18. 关于采购订单、销售订单、工作单行上的库存详细信息说明
  19. Java常见面试题(JVM)
  20. javaSe查漏补缺

热门文章

  1. 实现一个定时任务管理器
  2. 2020教师计算机考试笔试题,2020年全国教师资格考试信息技术学科知识与能力练习题...
  3. matlab中找不到指定的模块,Matlab装好后启动提示找不到指定模块如何解决?很急...
  4. 对于传统scnece-classfication的分析
  5. 比赛-6月Round1
  6. 解决ios手机页面overflow scroll滑动很卡的问题
  7. 【Shell Basic】source . 与 bash sh 的区别
  8. Win7下如何破解Visual Studio2008 90天试用版
  9. HDU-1150 Machine Schedule 二分图匹配
  10. Java后台框架篇--Spring与Restful风格API接口开发