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 相关文章推荐
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
Feb 14 Javascript
JavaScript 对象成员的可见性说明
Oct 16 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
Nov 03 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
基于express中路由规则及获取请求参数的方法
Mar 12 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 Javascript
JS实现4位随机验证码
Oct 19 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
js 颜色选择插件
2017/01/23 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python表示矩阵的方法分析
2017/05/26 Python
django中的setting最佳配置小结
2017/11/21 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
Django 外键的使用方法详解
2019/07/19 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
几款好用的python工具库(小结)
2020/10/20 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
班组长岗位职责范本
2014/01/05 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
高三高考决心书
2014/03/11 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
旷工检讨书大全
2015/08/15 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS