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里面的几种选择器 查找满足条件的元素$("#控件ID")
Aug 23 Javascript
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
JavaScript数据类型检测代码分享
Jan 26 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
Apr 06 Javascript
javascript RegExp 使用说明
May 21 Javascript
js实现多图左右切换功能
Aug 04 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
Oct 26 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Scrapy的简单使用教程
2017/10/24 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python脚本后台执行方式
2019/12/21 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
终止劳动合同协议书
2014/10/05 职场文书
就业导师推荐信范文
2015/03/27 职场文书
会计岗位职责范本
2015/04/02 职场文书
项目验收申请报告
2015/05/15 职场文书