JS判断数组那点事


Posted in Javascript onOctober 10, 2017

面试题中有个这样题目 如何判断数组 大家都知道哪些方法

其实有时候 明明知道哪些方法 但在关键时候就是说不上来

typeof运算符

typeof会返回这个类型的字符串

var a = '123'
 console.log(typeof(a)) //string
 var b = []
 console.log(typeof(b)) //object
 var c = {}
 console.log(typeof(c)) //object
 var d = null
 console.log(typeof(d)) //object

上述看到 数组 对象 null 用typeof返回都是object 这种方法不能识别出是否为数组

原型contructor链方法

实例化有一个contructor属性 这个属性指向生成对象 数组的方法

var a = []
 console.log(a.__proto__.constructor) //ƒ Array() { [native code] }
 var b = {}
 console.log(b.__proto__.constructor) //ƒ Object() { [native code] }

上述看到 数组是由Array函数实例化的 对象由Object函数实例化来得

感觉这种方法是可以了 但是 constructor这个属性是可以被改写的

var a = []
  a.__proto__.constructor = Object
  console.log(a.__proto__.constructor) //ƒ Object() { [native code] }

可以看到 这个是 变成了数组判断成了对象 所以这个方法也不是最好的

instanceof

这个方法是判断某个构造函数的prototype属性所指向的对象是否在另外一个要检测对象的原型链上

var a = []
  console.log(a instanceof Array) //a对象的原型链上能找到Array true
  console.log(a instanceof Object) //true 原型链上也能找到对象

上述这种也不是特别好 判断不出是数组还是对象

通用的方法 toString

toString() 方法返回放映这个对象的字符串

var a= '123'
  console.log(a.toString()) //123
  var b = [1,2,3]
  console.log(b.toSting()) //1,2,3
  var c = {}
  console.log(c.toString)) //[object Object]

可以看到只有对象返回对象类型

返回[object type] type代表对象的类型

判断对象用Object的toString的方法拿过来用

var a =[]
 Object.prototype.toString.call(a) //[object Array]

这个对象 toString方法是可以判断出是否为数组

但是这里注意下有个情况就是对象原型上toString() 也是可以更改的

Array.isArray(XX)

个人感觉还是使用通用方法 toString() 方法靠谱

总结

以上所述是小编给大家介绍的JS判断数组那点事,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery Post处理后不进入回调的原因及解决方法
Jul 15 Javascript
jQuery实现的支持IE的html滑动条
Mar 16 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
jQuery的bind()方法使用详解
Jul 15 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
详解Vue.js在页面加载时执行某个方法
Nov 20 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
template.js前端模板引擎使用详解
Oct 10 #Javascript
AngularJS中table表格基本操作示例
Oct 10 #Javascript
AngularJS中控制器函数的定义与使用方法示例
Oct 10 #Javascript
JavaScript实现计数器基础方法
Oct 10 #Javascript
JS实现合并json对象的方法
Oct 10 #Javascript
jQuery实现的form转json经典示例
Oct 10 #jQuery
JS实现websocket长轮询实时消息提示的效果
Oct 10 #Javascript
You might like
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
最佳JS代码编写的14条技巧
2011/01/09 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python的exec、eval使用分析
2017/12/11 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
python配置文件写入过程详解
2019/10/19 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
JNI的定义
2012/11/25 面试题
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
好军嫂事迹材料
2014/01/15 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android