判断一个变量是数组还是对象

很多人看到标题就会想到使用typeof运算符,但是实际上有些它判断不了
var a = [1,2,3]
console.log(typeof a)  // "object"//总结: typeof运算符并不能直接判断一个变量是对象还是数组,
//实际上,typeof运算符在判断基本数据类型可以,但是引用数据类型就吃力了
判断一个变量是否为数组和对象的方法
  1. instanceof运算符
//基本用法
var a = [1,2,3]
console.log(a instanceof Array); // true
console.log(a instanceof Object); // falsevar b = {name:'老王',age:18,
}
console.log(a instanceof Array); // false
console.log(a instanceof Object); // true//封装方法
function getDataType(o) {if(o instanceof Array){return 'Array'}else if(o instanceof Object){return 'Object'}else{return 'param is not object type'}
}
  1. 判断构造函数
var a = [1,2,3]
console.log(a.__proto__.constructor === Array)  //true
console.log(a.__proto__.constructor === Object)  //false<!--分装方法-->
function getDataType(o) {//获取构造函数var constructor = o.__proto__.constructor || o.constructorif(constructor === Array){return 'Array'}else if(constructor === Object){return 'Object'}else{return 'param is not object type'}
}<!--缺点-->早期的ie浏览器不支持__proto__ 这个属性
  1. toString()函数
var a = [1, 2, 3];
var b = {name: 'kingx'};console.log(Object.prototype.toString.call(a)); // [object Array]
console.log(Object.prototype.toString.call(b)); // [object Object]<!--其实任何类型的变量在调用toString函数时候,都会返回不同的结果-->
Object.prototype.toString.call(1);  // [object Number]
Object.prototype.toString.call('kingx'); // [object String]
var c;
Object.prototype.toString.call(c);  // [object Undefined]// 判断变量是数组还是对象
function getDataType(o) {var result = Object.prototype.toString.call(o);if (result === '[object Array]') {return 'Array';} else if (result === '[object Object]') {return 'Object';} else {return 'param is no object type';}
}
  1. Array.isArray()函数
  • 在JavaScript 1.8.5 版本中增加的静态函数
  • 注意:只能判断出是否为数组,并不能确定是否为对象
// 下面的函数调用都返回“true”
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
// 鲜为人知的事实:其实 Array.prototype 也是一个数组。
Array.isArray(Array.prototype);// 下面的函数调用都返回“false”
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray('Array');
Array.isArray(true);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java两表查询的方法(一对一,一对多,多对多)

一、配置环境&#xff1a; 首先我们需要Maven环境; 源码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

vue-router小结

1.什么是vue-router vue-router是vue.js官方给出的路由解决方案&#xff0c;只能结合vue项目进行使用&#xff0c;能够轻松的管理SPA项目中组件的切换 2.vue-router的用法 先安装vue-router &#xff08;npm i vue-router&#xff09; 在新建router/index.js 文件,在文件内导…

yandex图标点选验证码YOLOV8识别案例

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 某yandex图标点选验证码如下: 使用过yolov8的小伙伴可能都知道,这种直接打个标注,基本上就可以了,至于问题图片由于不能很好的切割做分类,所以干脆也做成目标…

探索更高效的语言模型提示-Anthropic的元提示工具

中午看到一个视频 视频地址&#xff1a; https://youtu.be/Evg4HXvsYVY?siWZLYw7lYPXttHUyw 该视频介绍了Anthropic的元提示工具&#xff0c;可以帮助用户更好地使用他们的语言模型&#xff0c;并提供了示例和指导。该工具可用于创建更好的提示&#xff0c;从而获得更具体和…

基于图卷积神经网络(GCN)的高光谱图像分类详细教程(含python代码)

目录 一、背景 二、基于卷积神经网络的代码实现 1、安装依赖库 2、建立图卷积神经网络 3、建立数据的边 4、训练模型 5、可视化 三、项目代码 一、背景 图卷积神经网络&#xff08;Graph Convolutional Networks, GCNs&#xff09;在高光谱图像分类中是一种有效的方法…

CSS实现文本溢出处理

1.单行文本溢出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

Dependency Injection: 如何解决依赖注入失败问题

Dependency Injection: 如何解决依赖注入失败问题 &#x1f489; **Dependency Injection: 如何解决依赖注入失败问题 &#x1f489;**摘要引言正文内容1. 依赖注入的基础概念代码示例&#xff1a;构造函数注入 2. 依赖注入失败的常见原因2.1 未能找到依赖的实例2.2 循环依赖2.…

Gogs搭建免费好用的Git服务器

1、说明 代码托管系统是开发中一个不可缺少的工具&#xff0c;通过代码托管系统可以方便协同开发&#xff0c;代码权限控制&#xff0c;代码异地灾备、版本管理、问题跟踪、项目文档管理等等项目管理所必须的工具。在项目的任何一个过程中&#xff0c;代码托管系统始终有着重要…

Axios的几种不同的responseType处理响应,以及blob与arraybuffer的解析

在使用 Axios 时&#xff0c;你可以通过设置 responseType 选项来指定如何处理响应数据。Axios 提供了几种不同的 responseType 选项&#xff0c;每种选项都会影响响应数据的格式。 以下是这些选项及其示例&#xff1a; 1. responseType: json 这是默认选项&#xff0c;表示…

App测试分发的秘密:如何让你的应用程序快速上线

App测试分发的重要性 在移动应用程序的开发过程中&#xff0c;测试分发是一个非常重要的环节。它可以帮助开发者快速地将应用程序推广到目标用户手中&#xff0c;收集反馈&#xff0c;进行bug修复和优化&#xff0c;从而提高应用程序的质量和用户体验。但是&#xff0c;测试分…

创业团队如何选择DevOps工具?

极狐GitLab 正式推出 499/人/年的 SaaS 团队版&#xff0c;AI DevOps 专业技术服务支持&#xff0c;让软件研发效率起飞&#xff01;官网链接&#xff1a;https://dl.gitlab.cn/tfk6s7bh 首先要考虑创业团队关心的点&#xff0c;主要包括以下几个&#xff1a; 价格便宜 对于创…

Android分区管理工具sgdisk使用

#有时df -h查看分区信息无法满足需求# 借助Android系统自带的sgdisk可以查看详细的分区信息&#xff0c;类似fdisk命令&#xff0c;sgdisk同样可以创建分区&#xff0c;功能也很强大。 一、sgdisk帮助信息 127|console:/ # sgdisk USAGE: sgdisk [OPTION...] <device>…

linux脚本:自动检测的bash脚本,用于检查linux的系统性能

目录 一、要求 二、脚本介绍 1、脚本内容 2、解释 3、使用方法&#xff1a; &#xff08;1&#xff09;脚本文件 &#xff08;2&#xff09;赋予权限 &#xff08;3&#xff09;执行结果 三、相关命令介绍 1、top &#xff08;1&#xff09;定义 &#xff08;2&…

Layui修改表格分页为英文

Layui修改表格分页为英文 1.前言2.Laypage属性 1.前言 主要记录初次使用Layui没有好好看官方文档踩坑&#xff0c;修改了源码才发现可以自定义 使用的Layui版本2.9.14 2.Laypage属性 Laypage属性中带的有自定义文本的属性 示例代码 table.render({.......page: {skipText: …

【Python】numpy库中上难度例题4道+详解考察点(多维数组+多层嵌套循环)

题目一&#xff1a;灰度图像中识别并统计特定像素模式的出现次数 题目: 假设你正在开发一个图像处理算法&#xff0c;需要在一个较大的灰度图像中识别并统计特定像素模式的出现次数。给定一个大图像 large_image 和一个较小的模板图像 template&#xff0c;编写一个 Python 函…

2.4GHz射频前端集成芯片:AT2401C芯片中文资料

关于AT2401C的基本资料&#xff1a; AT2401C是一款面向Zigbee&#xff0c;无线传感网络以及其他2.4GHz频段无线系统的全集成射频功能的射频前端单芯片。 那么射频放大器的作用是什么&#xff1f;它是用来放大来自射频信号源的低功率信号&#xff0c;放大到较高的功率后&#xf…

7. 运行时数据区-栈

栈的分类 栈分为Java虚拟机栈还有本地方法栈&#xff1a; Java虚拟机栈&#xff1a;用于保存Java中的方法相关的内容本地方法栈&#xff1a;用于保存在Java中使用native 标记的用C来实现方法 由于hotspot的作者发现使用一个栈就可以保存以上两个部分的内容&#xff0c;所以在…

探索编程语言的基本结构

在编程的世界里&#xff0c;每种语言都有其独特的语法和规则&#xff0c;但无论是哪种语言&#xff0c;它们都遵循着一些共同的基本结构&#xff0c;这些结构构成了程序的骨架。了解这些基本结构对于初学者来说至关重要&#xff0c;因为它们是编写有效、可维护代码的基础。以下…

ElasticSearch第4篇(亿级中文数据量 ElasticSearch与Sphinx建索引速度、查询速度、并发性能、实测对比)

经过实测&#xff1a;1.09亿的数据量进行中文检索。ElasticSearch单机的检索性能在0.005~5.6秒之间&#xff0c;此检索速度可满足95%的业务场景&#xff08;注意&#xff1a;每条ES文档平均65个汉字&#xff0c;数据源取自几千本小说&#xff0c;大部分文档在15~300个汉字之间&…

守护模型安全:在Mojo模型中实现动态自定义安全性保障

守护模型安全&#xff1a;在Mojo模型中实现动态自定义安全性保障 在机器学习领域&#xff0c;模型的安全性是一个至关重要的议题。Mojo模型&#xff0c;作为一个通用的术语&#xff0c;可以指代任何机器学习或深度学习模型。随着模型被集成到生产环境中&#xff0c;确保其安全…