当前位置: 首页 > news >正文

17. 如何判断一个对象是不是数组

总结

  1. Array.isArray(obj) ✅ 推荐
  2. obj instanceof Array
  3. Object.prototype.toString.call(obj) === '[object Array]'
  4. Array.prototype.isPrototypeOf(obj)

方法对比

方法是否推荐说明
Array.isArray(obj)✅ 强烈推荐最直接、最准确的方式
obj instanceof Array✅ 推荐适用于单一全局环境,跨框架可能出错
Object.prototype.toString.call(obj)✅ 推荐可靠的通用方法,适用于所有对象类型判断
Array.prototype.isPrototypeOf(obj)❌ 不推荐判断的是原型链,不能准确判断是否为数组实例

示例代码

1. Array.isArray()

const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // trueconst obj = {};
console.log(Array.isArray(obj)); // false

2. instanceof Array

const arr = [1, 2, 3];
console.log(arr instanceof Array); // trueconst obj = {};
console.log(obj instanceof Array); // false

⚠️ 注意:instanceof 在跨框架(如 iframe)时可能返回 false

3. Object.prototype.toString.call()

const arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // [object Array]const obj = {};
console.log(Object.prototype.toString.call(obj)); // [object Object]

这是最通用、最安全的类型判断方式,适用于任何 JavaScript 环境。

4. Array.prototype.isPrototypeOf()

const arr = [1, 2, 3];
console.log(Array.prototype.isPrototypeOf(arr)); // trueconst obj = {};
console.log(Array.prototype.isPrototypeOf(obj)); // false

⚠️ 此方法判断的是原型链关系,并非是否为数组实例,不推荐用于判断数组。

推荐用法

  • 优先使用 Array.isArray():简洁、准确、标准。
  • 次选 Object.prototype.toString.call():适用于需要兼容旧环境或判断多种类型时。

注意事项

  • 避免使用 typeof 判断数组:typeof [] 返回 "object"
  • 避免使用 instanceof 在跨全局对象(如多个 window)的场景中使用。

http://www.lryc.cn/news/620339.html

相关文章:

  • 【LeetCode】4. 寻找两个正序数组的中位数
  • hadoop 前端yarn 8088端口查看任务执行情况
  • 【深入浅出STM32(1)】 GPIO 深度解析:引脚特性、工作模式、速度选型及上下拉电阻详解
  • 数据结构:队列(Queue)与循环队列(Circular Queue)
  • linux_网络层-ip协议
  • 力扣 hot100 Day72
  • 深入理解 Cookie 与 Session —— Web 状态保持详解与实战
  • SpringBoot 整合 Langchain4j 系统提示词与用户提示词实战详解
  • JavaWeb(05)
  • TCP客户端Linux网络编程设计详解
  • 人工智能——CNN基础:卷积和池化
  • HiSmartPerf使用WIFI方式连接Android机显示当前设备0.0.0.0无法ping通!设备和电脑连接同一网络,将设备保持亮屏重新尝试
  • SAP Valuation Category在制造业成本核算中的使用场景与配置方案
  • 基于C语言基础对C++的进一步学习_C和C++编程范式、C与C++对比的一些补充知识、C++中的命名空间、文件分层
  • window显示驱动开发—多平面覆盖 VidPN 呈现
  • 看懂 Linux 硬件信息查看与故障排查
  • 力扣42:接雨水
  • 人工智能入门①:AI基础知识(上)
  • Python图像处理基础(十三)
  • 《工程封装》(Python)
  • 网络安全合规6--服务器安全检测和防御技术
  • 3.Ansible编写和运行playbook
  • 3DM游戏运行库合集离线安装包下载, msvcp140.dll丢失等问题修复
  • ESP32_STM32_DHT20
  • 三极管的基极为什么需要下拉电阻
  • Vue3从入门到精通:4.1 Vue Router 4深度解析与实战应用
  • vue实现模拟 ai 对话功能
  • JS的学习5
  • vue修改element的css属性
  • 决策树回归:用“分而治之”的智慧,搞定非线性回归难题(附3D可视化)