JavaScript 判断数组和对象

2023-11-08

有时候,我们需要识别一个变量是数组还是对象,例如进行深拷贝时。

这里提供三种方法识别数组还是对象。

1. Array.isArray()

Array.isArray() 用于确定传递的值是否是一个Array。

2. constructor

数组的构造函数是Array(),而对象的构造函数是Object()。所以我们判断一个变量是数组还是对象可以查看它的构造函数。

3. instanceof 

补充:A instanceof B 判断A的原型链上是否有B的原型

比如 数组[1,2]的原型链上有Array和Object,所以[1,2] instanceof Array,[1,2] instanceof Object都会返回true

而对象{'a':123}的原型链上只有Object,所以{'a':123} instanceof Array会返回false,而{'a':123} instanceof Object会返回true

所以我们判断一个变量是数组还是对象可以查看它的原型链上是否有Array。

4. Object.prototype.toString.call()

通过改变toString函数中this的指向,判断参数的类型


注意:在跨域判断时,instanceof 会失效,toString 方法有效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 判断数组和对象 的相关文章

  • TinyMCE 输入以相反顺序写入

    我面临这个问题 每当我输入 TinyMCE 时 我的光标会自动向左移动 最终从右向左写入文本 它只发生在我部署的应用程序中 但如果我在我的机器上本地运行代码 同样可以正常工作 发生这种情况的任何可能原因 相同的屏幕截图 https i st
  • javascript中如何无限循环

    我尝试使用 0 到 100 和 100 到 0 之间的 while 进行无限循环 但浏览器崩溃了 有没有办法清除浏览器内存 这是我的代码 var a 0 var flag true while true if a lt 100 flag t
  • 使用 ScriptEngine 从 JavaScript 调用 Java 方法

    我正在使用 ScriptEngine 运行 JavaScript 我希望 JavaScript 脚本能够调用 myFunction 其中 myFunction 是我的给定类中的一个方法 我知道可以将 importPackage 用于标准 J
  • 使用最新 Ember Data 版本中的 RESTSerializer 格式化 JSON

    我正在努力将我的 JSON munge 成正确的格式 为了说明这一点 我做了一个快速的 JSfiddle http jsfiddle net chrismasters NQKvy 638 http jsfiddle net chrismas
  • 从数组数组中获取唯一值[重复]

    这个问题在这里已经有答案了 我有以下数组 let arr email protected cdn cgi l email protection email protected cdn cgi l email protection email
  • 使用 word_number 值对 javascript 数组进行排序

    如何对数组进行排序 var arr new Array word 12 word 59 word 17 这样我得到 word 12 word 17 word 59 Thanks 您需要编写一个排序方法 您可以编写任何您喜欢的方法 该方法在
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • 如何防止在达到一定字符数后向文本区域输入内容?

    使用下面的代码 任何超过指定最大值的输入都将被删除 但这会产生一种效果 即键入字符后立即将其删除 我宁愿简单地阻止输入字符
  • JQuery _renderItem 没有被调用

    我正在尝试使用 renderItem 函数创建自定义 ui menu item 元素 但经过可能尝试后 我什至无法调用该函数 自动完成功能正在工作 但就像 renderItem 函数不存在一样 这是我的脚本部分
  • Django 模板变量从 {% for %} 循环到 Javascript

    这是一个迭代记录的 Django 模板 每条记录都包含一个由 JS 函数填充的 div 为了让 JS 知道要做什么 它需要从每次 for 循环迭代中获取一个变量并使用它 我不知道具体如何实现这一目标或是否可能 我不知道 也许记录在单独的 J
  • 函数声明或函数表达式

    我刚刚在块作用域中定义函数时遇到了问题 考虑以下程序 try greet function greet alert Merry Christmas catch error alert error 我希望这个程序能够发出警报Merry Chr
  • Flot 0.8.2 折线图 - 颜色错误

    我正在使用 Flot 折线图并设置它们的颜色 我发现了一个奇怪的错误 在前 3 种颜色之后 绘图对所有其他线条使用最后一种颜色 这不是正确的行为 更有趣的是图例显示了正确的颜色 这是一个已知的错误 var dataSet label d1
  • html输入数字,min + step,使step忽略min?

    是否有可能使step忽略min属性
  • 如何在 Astro 中的组件之间共享状态?

    我相信我在代码中采用了错误的方法 如何在按钮单击中设置客户端首选项 该按钮单击用作全局 astro 组件中的道具 或者我应该怎么做 我知道这是可能的 因为 astro js 本身在他们的文档网站中这样做了 下面是我的尝试的解释 我目前正在开
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • 如何在javascript中解析 yyyy-MM-dd HH:mm:ss.SSS 格式的日期?

    const time 2016 11 16 00 00 00 000 const date new Date time console info date 似乎 safari 无法解析 yyyy MM dd HH mm ss SSS 格式日
  • jVectorMap - 向下钻取地图 - 自定义背景

    我正在使用 jVectorMap 中的向下钻取地图 并且尝试将自定义背景颜色设置为地图的第二层 为了自定义主级别 我使用 main 参数 但我不知道如何将其扩展到地图的较低级别 提前致谢 马切伊 None
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring

随机推荐

  • 获取宝塔Linux面板登陆地址账号和密码

    在ssh终端输入 etc init d bt default
  • Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields

    Realtime Multi Person 2D Pose Estimation Using Part Affinity Fields 1 文章概要 文章实现了图片中的多人姿态检测 与已有的方法相比 最大的优势在于检测的速度对人物的数量不敏
  • python三方库是什么_python第三方库有哪几种

    在对于python的使用上 除了要掌握基本的操作方法外 如果有一些好用的工具辅助 效果也是非常明显的 为了能够给大家提供最大的帮助 python中的第三方库的种类也是非常多的 本篇挑选了使用功能强大 且比较好用的第三方类 整理出了它们的一些
  • R数据处理——按符号分割数据&统计两列数据组合的频数

    初始数据格式 数据格式如图所示 每个Keywords里面都含有多个关键词 使用分号 间隔开 一共有ABCDEF六个group 并且关键词有重复 最终想要的数据格式 统计所有不重复的关键词在六个group中出现的频次 使用R来处理 rm li
  • SAP CO TCODE

    CO 主数据 利润中心主数据维护 标准层次 KCH5N KCH6N 利润中心 组 非标准层次 KE51 KE52 KE53 利润中心 KCH1 KCH2 KCH3 利润中心组 成本中心主数据维护 标准层次 OKEON OKENN 成本中心
  • Spring Boot:让你轻松掌握自动装配的奥秘

    Spring Boot是基于Spring框架开发的一种应用框架 它通过自动装配机制 大大简化了Spring应用的开发和部署 使开发者可以更加专注于业务逻辑的实现 而无需过多关注Bean的实例化和装配过程 本文将从以下几个方面介绍Spring
  • Pytorch中的torch.nn.Linear()方法的详解

    torch nn Linear 作为深度学习中最简单的线性变换方法 其主要作用是对输入数据应用线性转换 先来看一下官方的解释及介绍 class Linear Module r Applies a linear transformation
  • 学习Kotlin看哪些书?【赠书活动|第八期《深入实践Kotlin元编程》】

    文章目录 图书简介 01 深入实践Kotlin元编程 02 Spring Boot学习指南 03 Kotlin编程实战 抽奖方式 与Java一样 Kotlin也是用于Android应用程序开发的编程语言 是Android官方支持的第二种编程
  • 对某擦边站点的一次渗透

    更新时间 2022 07 05 2022年11月21日21 50 12 1 说明 在上半年的时候 在线浏览网页的时候 突然跳转到了一个sese的界面 然后要下载app 本着弹出即下载的原则 我就欣然安装了 app本身长这样 打开之后是这样的
  • NFS 高可用方案(NFS+keepalived+Sersync)

    NFS 高可用方案 NFS keepalived Sersync 1 简述 1 1 介绍 本方案 NFS 的高可用方案 应用服务器为 Client 两台文件服务器分别Master和 Slave 使用 keepalived 生成一个虚拟 IP
  • 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。。。。

    给定一个仅包含数字 2 9 的字符串 返回所有它能表示的字母组合 给出数字到字母的映射如下 与电话按键相同 注意 1 不对应任何字母 示例 输入 23 输出 ad ae af bd be bf cd ce cf 说明 尽管上面的答案是按字典
  • Android开发需要知道的5个设计模式

    设计模式是软件设计中给定上下文中常见问题的通用 可重用解决方案 设计模式是对经常出现的问题的解决方案 设计模式不是成品 相反 它们是可以根据上下文应用于多种情况的模板 并且可以随着时间的推移进行改进 从而成为非常强大的软件工程工具 设计模式
  • 【单片机毕业设计】【mcuclub-dz-060】基于单片机的智能衣柜控制系统

    最近设计了一个项目基于单片机的智能衣柜控制系统 与大家分享一下 一 基本介绍 项目名 智能衣柜 项目编号 mcuclub dz 061 单片机 STC89C52 功能简介 1 通过DHT11检测衣柜内温湿度 当温度或湿度超过上限值 则启动风
  • MySQL递归查询——数据平坦化新思维

    最近在做Oracle到MySQL的数据库的移植过程 两者之间的诸多差别 比如MySQL不支持ADO 函数不一致 唯一索引限制不一样等等 都易于解决 但有一个问题却困扰我们良久 Oracle的递归查询 select from start wi
  • 【C++学习第六讲】第一章练习题(含源代码)

    显示自己的姓名和地址 就是简单使用cout函数进行输出 源代码如下 include
  • CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer)

    CentOS7 快速搭建VNC Server 实现服务器远程控制台访问 Java Viewer 前言 工作中会有使用到VNC的时候 尤其是做服务器运维相关工作的时候 往往远程管理网和办公网或者生产环境相互隔离 远程管理的工作就会变的复杂 因
  • Vue.js学习笔记

    在开始学习Vue js的时候 为了加深记忆 也为了日后在翻阅的时候可以快速找到自己想要的东西 特此在这里记录下我认为需要记录的知识点 在这里也分享给大家 希望可以给需要的你们提供一些帮助 具体内容还请看 Vue js官网 双向数据绑定 指令
  • java merkle树,Merkle树的实现

    简介 本篇文章是对Merkle tree的解释 Merkle tree是一种应用在比特币中的技术 本文的目标是通过代码来理解它的实现过程 环境 Jdk 1 8 0 66 Idea Merkle树 Merkle tree 哈希树 是一种数据结
  • JavaScript switch语句和循环

    1 switch 语句 1 用于基于不同的条件来执行不同的动作 2 如何使用switch结构 备注 default 关键词来规定匹配不存在时做的事情 3 比较switch和多重if结构 相同点 都可以实现多分支结构 不同点 switch 只
  • JavaScript 判断数组和对象

    有时候 我们需要识别一个变量是数组还是对象 例如进行深拷贝时 这里提供三种方法识别数组还是对象 1 Array isArray Array isArray 用于确定传递的值是否是一个Array 2 constructor 数组的构造函数是A