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 相关文章推荐
Javascript var变量隐式声明方法
Oct 19 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
jQuery解决$符号命名冲突
Jun 18 Javascript
angularjs中ng-bind-html的用法总结
May 23 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
JavaScript设计模式之享元模式实例详解
Jan 17 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
Vuex模块化应用实践示例
Feb 03 Javascript
JavaScript中交换值的10种方法总结
Aug 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
用PHP函数解决SQL injection
2006/12/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
详解python中的装饰器
2018/07/10 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
小学评语大全
2014/04/22 职场文书
电子专业求职信
2014/06/19 职场文书
三方股份合作协议书
2014/10/13 职场文书
2015小学师德工作总结
2015/07/21 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers