js基础-12-判断数组和判断对象的方法
一,判断数组的方法
首先需要明确的是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-判断数组和判断对象的方法相关推荐
- js中判断空数组和空对象的方法
复习的时候做一些学习的笔记总结. javascript的值的类型: 原始值:number.string.boolean.undefined.null.symbol(ES6).bigint(ES10) ...
- JS基础:变量、函数、对象、数组、循环、选择(判断)
JS基础:变量.函数.对象.数组.循环.选择(判断) js的三个组成部分 ECMAScript - ES - 语法规范 DOM - 文档对象模型 - API BOM - 浏览器对象模型 - API j ...
- 3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组
3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景 一.当数组中的数据是简单类型时: 应用js中的indexof方法:存在则返回当前项索引,不存在则返回 ...
- js,根据一个数组,遍历对象数组,进行多条件并列的筛选或过滤
js,根据一个数组,遍历对象数组,进行多条件并列的筛选或过滤 1. 筛选是否 2. 筛选特定值 多条件并列:某一条数据的两个以上的属性,同时满足筛选条件 1. 筛选是否 业务场景:返回一个对象数组,在 ...
- php判断几维数组的方法,php判断数组是几维的方法
php判断数组是几维的方法:首先创建一个PHP示例文件:然后定义一个foreachArray方法:接着通过"is_array"函数检测变量是否是一个数组:最后通过循环遍历的方法判断 ...
- JS JavaScript中去除数组中重复元素的方法
JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...
- JS中有没有简单的判断数组是否为空的方法
直接判断数组的长度是否为0 利用布尔值判断 数组为object,直接用if(a)判断的话都是为true,可以用数组的长度去直观判断是否为空 将数组和布尔类型都转化为Number类型比较,空数组转化为N ...
- 判断数组里面的对象是否相同与不相同
const newList=[] for(const t of this.tableData){if(newList.find(c => c.goodsFeeModeId === t.goods ...
- 【JS基础】Array数组的创建与操作方法
本文参考:<JS高级程序设计>(红宝书). JS数组的独特性 JS中Array类型属于引用类型,是除了Object之外最常用的类型. JS的数组与其他语言的数组有着相当大的区别,它十分灵活 ...
- php if为空那么,PHP中判断数组是否为空的方法
PHP中判断数组为空的方法有好几种,但当遇到判断多维数组时,这些方法都无法判别数组是否为空,现在下面先介绍从网上搜索到判断一维数组的方法. PHP判断数组为空之一.for循环 最简单也是最直接的方法, ...
最新文章
- 网络推广产品浅析网站想要保持稳定的SEO排名和流量需要做什么?
- c语言考试题及答案 大一,大一C语言期末考试试题
- 【Jmeter篇】Jmeter踩坑记(一)
- MySQL 双主单写,主库偶尔出现大量延迟的原因
- 计算机网络的结构之Internet结构
- 数据结构--数组+链表实现哈希表
- Flash版Logo语言9.83
- 牛客练习赛28 E【斜抛运动的最大水平射程】
- go语言编程前景怎么样?国内Go语言布道师许式伟这样说
- 同义词转换不再有效_中考英语丨初中英语句型转换大全
- Verilog编写VGA控制器
- 电商、数字化下的中国书店
- HTML的relative与absolute区别
- IT6801FN图像质量调优
- vue form表单验证清除
- 码云gitee 部署公钥匙
- Unity在UGUI上使用Polygon Collider 2D实现不规则图案匹配
- 关于采购订单、销售订单、工作单行上的库存详细信息说明
- Java常见面试题(JVM)
- javaSe查漏补缺
热门文章
- 实现一个定时任务管理器
- 2020教师计算机考试笔试题,2020年全国教师资格考试信息技术学科知识与能力练习题...
- matlab中找不到指定的模块,Matlab装好后启动提示找不到指定模块如何解决?很急...
- 对于传统scnece-classfication的分析
- 比赛-6月Round1
- 解决ios手机页面overflow scroll滑动很卡的问题
- 【Shell Basic】source . 与 bash sh 的区别
- Win7下如何破解Visual Studio2008 90天试用版
- HDU-1150 Machine Schedule 二分图匹配
- Java后台框架篇--Spring与Restful风格API接口开发