在 JavaScript 中,数组的 toString() 方法被覆盖(重写)为返回数组元素的逗号分隔字符串,而不是原始的 [object Array] 类型标识。以下是详细解释和修复方案:


问题原因

  1. Array.prototype.toString 被覆盖
    数组继承自 Object,但自定义了 toString() 方法:

    javascript

    const arr = [1, 2, 3];
    arr.toString(); // "1,2,3"(数组元素拼接的字符串)
  2. 无法直接获取类型标识
    直接调用 toString() 无法得到 [object Array]

    javascript

    [1, 2, 3].toString() === "1,2,3"; // true

修复方案:获取类型标识 [object Array]

方法 1:使用 Object.prototype.toString.call()

javascript

const arr = [1, 2, 3];
const typeString = Object.prototype.toString.call(arr); // "[object Array]"
方法 2:使用 Array.isArray()(推荐类型检查)

javascript

const isArray = Array.isArray(arr); // true(返回布尔值)
方法 3:通过 Symbol.toStringTag(ES6+)

javascript

const typeString = arr[Symbol.toStringTag]; // "Array"(仅标签部分)
console.log(`[object ${typeString}]`); // "[object Array]"

不同方案的对比

方法返回值说明
arr.toString()"1,2,3"数组元素拼接的字符串(不用于类型检查)
Object.prototype.toString.call(arr)"[object Array]"标准类型标识
Array.isArray(arr)true/false直接判断是否为数组(推荐)
arr[Symbol.toStringTag]"Array"获取类型标签(ES6+)

何时需要修复?

当需要 精确检测数据类型 时(尤其是区分数组和对象):

javascript

function typeCheck(obj) {return Object.prototype.toString.call(obj);
}typeCheck([]);  // "[object Array]"
typeCheck({});  // "[object Object]"

总结

场景正确方案
获取数组元素的字符串arr.toString() 或 arr.join(",")
检测数组类型Array.isArray(arr)(推荐)
获取标准类型标识字符串Object.prototype.toString.call(arr)

最佳实践

  • 类型检查用 Array.isArray()

  • 需要类型字符串时用 Object.prototype.toString.call()

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

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

相关文章

mysql索引底层B+树

B树胜出的关键特性:矮胖树结构:3-4层高度即可存储2000万条记录(假设每页存1000条) 叶子链表:所有数据存储在叶子节点,并通过双向链表连接 非叶导航:非叶子节点仅存储键值,不保存数据…

AI开放课堂:钉钉MCP开发实战

我们正处在AI技术爆发的时代,也处于企业数字化蓬勃发展的时代。如何利用AI技术,突破模型自身知识的局限,安全、高效地与外部世界连接和交互,是当前所有AI开发者在企业数字化中面临的问题之一。 MCP(Model Context Prot…

DigitalOcean 一键模型部署,新增支持百度开源大模型ERNIE 4.5 21B

使用过DigitalOcean GPU Droplet 服务器的用户应该对我们的一键模型部署功能不陌生。DigitalOcean 的一键模型部署 (1-Click Models) 功能是 DO 为开发者和企业提供的一种便捷方式,用于快速部署和运行预训练的生成式 AI 模型,尤其是大型语言模型 (LLM)。…

【嵌入式面试】嵌入式笔试与面试宝典(offer必来)

💌 所属专栏:【嵌入式面试】 😀 作  者:兰舟比特 🐾 🚀 个人简介:热爱开源系统与嵌入式技术,专注 Linux、网络通信、编程技巧、面试总结与软件工具分享,持续输出实用干…

企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构

引言:数字化转型中数据协同困境与系统融合挑战 在数字化转型实践中,企业普遍面临数据系统与业务运营的协同困境,主要表现为数据处理平台与核心业务流程的架构隔离、分析成果与决策闭环的价值断层、以及双重数据维护带来的资源损耗。这种系统…

openbmc 日志系统继续分析

1.说明 1.1 总体说明 本节是继: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的继续分析的文档。 该篇内容主要目的是分析整个openbmc的日志系统。 注意解读文档: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它进行bug管理】

JIRA小白如何使用它进行bug管理 提示:入职一般来说,公司会提供账号,不需要部署如何提bug: JIRA有两种提交方式 在执行测试用例中在bug管理项目中新建提bug建议或者注意事项: 标题:执行完A之后,发…

陪诊小程序系统开发:开启医疗陪护新时代

在快节奏的现代生活中,人们面临着各种各样的压力,健康问题也日益凸显。当生病就医时,尤其是对于老年人、孕妇、残障人士等特殊群体,独自前往医院往往会遇到诸多困难,如不熟悉医院流程、行动不便、心理上感到孤独无助等…

Leetcode—1035. 不相交的线【中等】

2025每日刷题(214) Leetcode—1035. 不相交的线最长公共子序列长度(Longest Common Subsequence,LCS) 给定两个序列(如字符串或数组),最长公共子序列(LCS)是同…

使用 Conda 工具链创建 UV 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》

Python 多版本环境治理理念驱动的系统架构设计:三维治理、四级隔离、五项自治 原则-CSDN博客 Python 多版本与开发环境治理架构设计-CSDN博客 【终极实战】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具协同 AnacondaPyCharm:构建 Python 全版本栈隔离…

一文通透mamba2「力证Transformer are SSM」:从SSM、半可分矩阵、SMA、SSD到mamba2

前言 实话说,过去一两月一直忙着我司两大类项目的推进 一类是正在逐一上线基于大模型的论文翻译、论文审稿、论文对话、论文修订/润色、论文idea提炼等等(截止到24年8月底,其中的审稿和翻译已上线七月官网 )一类是正在抓紧做面向一个个工厂的具身智能机…

【Java基础06】ArrayList

文章目录1.ArrayList1.1 集合的基本使用1.2 集合的创建和成员方法1.3 练习一:集合的遍历基本数据类型对应的包装类1.4 练习二:使用集合存储并遍历学生对象1.4 练习三:添加用户对象并判断是否存在写方法要思考的步骤1.5 练习四:添加…

ddos 放在多个云主机,同时运行

1. 起因, 目的: 我打开 grok, 被 cloudflare 拦截,问我是不是机器人。 这个情况,如果是别的小网站也就算了,很正常。 大公司也搞这种东西,要么是偷懒,要么是太小气了。 一气之下,我决定写个 ddo…

lspci/setpci用法小结

目录 1.lspci用法小结 2.lspci -t 3.setpci用法小结 1.lspci用法小结 参考博客:【PCIe】lspci用法小结 - 知乎 lspci是一个用来显示系统中所有PCI总线设备或者连接到该总线上所有设备的工具 man lspci lspci(8) …

光通信从入门到精通:PDH→DWDM→OTN 的超详细演进笔记

光通信从入门到精通:PDH→DWDM→OTN 的超详细演进笔记 作者: 脱脱克克 日期:2025-07-24 关键词:DWDM、OTN、G.709、光纤、带宽、C-band、L-band、DSP、ROADM 摘要 本文用一条“高速公路”的比喻,把 40 年光传输技术演进…

安全初级——网页

网页代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户登录</title><script src&…

JVM原理及其机制(二)

目录 一 . 垃圾回收机制&#xff08;GC&#xff09; 二 . 垃圾回收的具体步骤 &#xff08;1&#xff09;先找出谁是垃圾 方案一&#xff1a;引用计数 方案二&#xff1a;可达性分析 &#xff08;2&#xff09;释放垃圾的内存空间 方案一&#xff1a;标记清除 方案二…

Solo:基于 zkHE 的身份验证协议,构建 Web3 可信匿名身份层

“Solo 正在基于其独创的 zkHE 架构&#xff0c;构建一套“可信匿名”的链上身份系统&#xff0c;有望打破长期困扰 Web3 的“不可能三角”&#xff0c;即在隐私保护、身份唯一性与去中心化可验证性之间实现兼得。”前不久&#xff0c;Web3 身份层项目 Solo 宣布完成 120 万美元…

【Excel函数】将数据非空的字段筛选出来放在新列

一、需求描述 将对应数据不为空的字段筛选出来放在新的列里 二、解析 IFERROR(INDEX(B$2:B$10,SMALL(IF(C$2:C$10<>"",ROW(C$2:C$10)-ROW(C$2)1),ROW(A1))),"") 1. IF(C$2:C$10<>"", ROW(C$2:C$10)-ROW(C$2)1) 作用&#xff1a;…

【unity游戏开发入门到精通——组件篇】unity的粒子系统力场 (Particle System Force Field)实现如旋风、吸引力、风吹效果等

文章目录前言一、参数介绍二、Particle System Force Field 的核心特性三、如何使用1、粒子系统开启外力选项2、然后再添加粒子系统力场 (Particle System Force Field)即可参考专栏推荐完结前言 Unity的粒子系统是一个非常强大的工具&#xff0c;可以用来创建各种动态效果&am…