JavaScript 用七种方式教你判断一个变量是否为数组类型
引言
我们如何判断一个变量是否为数组类型呢? 今天来给大家介绍七种方式,别走开, 这肯定会被问到的~继续往下看吧
正文
首先先告诉你们, typeof 是无法判断一个变量是否为数组类型的,我们来看一下例子:
let arr = [1, 2, 3]
console.log(typeof arr)
// object 最后输出的是object对象
方法一
使用 instanceof 运算符, 该运算符左边是我们想要判断的变量, 右边则是我们想要判断的对象的类, 例如:
let arr = [1, 2, 3]
console.log(arr instanceof Array)
// true 返回true,说明变量arr是数组类型
方法二
利用构造函数来判断他的原型是否为Array, 用法: 变量.constructor === 变量类型
let arr = [1, 2, 3]
console.log(arr.constructor === Array)
// true 返回true,说明变量arr是数组类型
方法三
第三种方法利用的一个专门的方法 isArray(), 用法:Array.isArray(变量),返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型
let arr = [1, 2, 3]
console.log(Array.isArray(arr))
// true 返回true,说明变量arr是数组类型
方法四
第四种方法是调用Object.prototype.toString.call(),返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型
let arr = [1, 2, 3]
console.log(Object.prototype.toString.call(arr) === '[object Array]')
// true 返回true,说明变量arr是数组类型
方法五
第五种方式是通过对象的原型方式来判断,直接来看例子
let arr = [1, 2, 3]
console.log(arr.__proto__ === Array.prototype)
// true 返回true,说明变量arr是数组类型
方法六
第六种方式是通过 Object.getPrototypeOf()来判断是否为数组类型,例如
let arr = [1, 2, 3]
console.log(Object.getPrototypeOf(arr) === Array.prototype)
// true 返回true,说明变量arr是数组类型
方法七
第七种方式是通过 isPrototypeOf() 方法来判断是否为数组类型,例如
let arr = [1, 2, 3]
console.log(Array.prototype.isPrototypeOf(arr))
// true 返回true,说明变量arr是数组类型
结束语
当你面试中被问到如何判断一个变量是否为数组类型的时候,你就将这七种方式脱口而出吧, 一定会让面试官大吃一斤的~
JavaScript 用七种方式教你判断一个变量是否为数组类型的更多相关文章
- 如何判断一个变量是否为数组(isArray)
在我们平时的工作中经常会用到如何判断一个变量是否为数组.常用的方法很多,有用常用框架里面的,isArray.但是关于这个isArray的实现,各有不同. 常用的方法有如下几种 1.instanceof ...
- js判断一个变量是否为数组的解决方案
前端开发中,在做项目的时候,我们经常需要对一个变量进行数组类型的判断,当然即使你暂时没遇到,但是这个问题也是大家去面试时的高频问题,有必要拿出来说一说. 大家都知道js中可以使用typeof来判断变量 ...
- js如何判断一个变量是否是数组?
//方法一 var arr = [1,2,3]; var obj = {'name': 'xiaoming','age': 19}; if(arr.constructor == Array){ ale ...
- Javascript如何判断一个变量是数字类型?
isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false.isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN) ...
- JavaScript 创建对象的七种方式
转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...
- JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构
JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...
- 原生JavaScript支持6种方式获取元素
一.原生JavaScript支持6种方式获取元素 document.getElementById('id'); document.getElementsByName('name'); document ...
- JavaScript中七种数据类型·中·一
Standing on Shoulders of Giants; 说到JavaScript里的类型很容易就让人想起 42和"42",分别是string型和number型,但是他们可 ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
随机推荐
- 学习 bypass csp记录
最近看到一篇bypas csp的记录复现学习下 配置csp 这里直接设置html头达到配置csp的效果. Content-Security-Policy: script-src 'self' 'uns ...
- Java基础之函数
函数(方法)的定义: 函数就是定义在类中的具有特定功能的一段独立的小程序. 为什么有函数:为了提高代码的复用性,对独立代码进行抽取,把抽取部分代码部分,定义成一个独立的功能,方便日后使用.Java中对 ...
- python为什么这么火?里面肯定是有原因的
因为人生苦短要用python啊! 看完本文,你将在结尾得到本文的一个福利彩蛋 你瞧瞧其他语言之父... Java之父——James Gosling PHP之父 ——Rasmus Lerdorf Obj ...
- Jupyter Notebook 导出PDF与Latex中文支持
Jupyter Notebook 最近搞机器学习用到了Jupyter Notebook. 作为一个实时记事本,有时需要将内容导出为PDF. 但是,Jupyter Notebook自带的File -&g ...
- JavaScript运算符与流程控制
JavaScript运算符与流程控制 运算符 赋值运算符 使用=进行变量或常量的赋值. <script> let username = "YunYa"; < ...
- 关于调用三方平台接口与推送接口的总结<二>(2020.7.27)
前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是 https://www.cnblogs.com/alanturingson/p/13377500.ht ...
- sscanf,sprintf(思修课的收获)
转载的,就是做个笔记 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量 ...
- 社交网站的数据挖掘与分析pdf版本|网盘下载地址附提取码|
点击此处进入网盘下载地址 提取码:btqx 作者介绍: 马修·罗塞尔(MatthewA.Russell),DigitalReasoningSystems公司的技术副总裁和Zaffra公司的负责人,是热 ...
- PHP fread() 函数
定义和用法 fread() 函数读取打开的文件. 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行. 该函数返回读取的字符串,如果失败则返回 FALSE. 语法 string ...
- 省选模拟赛day4
怎么说?发现自己越来越菜了 到了不写题解写不出来题目的地步了.. 这次题目我都有认真思考 尽管思考的时候状态不太好 但是 我想 再多给我时间也思考不出来什么吧 所以写一份题解. T1 n个点的有根树 ...