我应该如何检测参数是否是数组,因为typeof []返回'object',我想区分数组和对象.

这个对象可能看起来像{"0":"string","1":"string","length":"2"},但如果它实际上是一个看起来像数组的对象,我不希望它变成array.

JSON.parseJSON.stringify能够做出这种区分.我该怎么做?

我正在使用Node.JS基于V8,与Chrome相同.

推荐答案

  • Array.isArray

本机V8功能.它很快,总是正确的.这是ES5的一部分.

  • arr instanceof Array

判断对象是否由数组构造函数生成.

来自下划线的方法.下面是从他们的源代码中提取的一个片段

var toString = Object.prototype.toString,
    nativeIsArray = Array.isArray;
_.isArray = nativeIsArray || function(obj) {
    return toString.call(obj) === '[object Array]';
};

此方法获取一个对象并对其调用Object.prototype.toString方法.对于数组,这将始终返回[object Array].

根据我个人的经验,我发现询问toString方法是最有效的,但它没有instanceof Array短,可读性也不如Array.isArray快,但这是ES5代码,我倾向于避免使用它的可移植性.

我个人建议您try 使用underscore,这是一个包含常用实用方法的库.它有很多有用的函数,可以让你的代码干涸.

Node.js相关问答推荐

Node.js中Redis的并发问题

即使卷已设置,Docker Nodemon 也不会热重载

Mongoose:如何使用填充进行查找

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

NodeJS:zlib.gzipSync 在不同平台上给出不同的明文输出

几个 lambda 共有的函数

dayjs的isSameOrAfter方法未按预期工作

表达 js 错误处理程序在第一个之后被忽略

bcrypt.compare 每次都返回 false

fastify:流过早关闭

使用 Node.js 在 MongoDB 中搜索

配额超出了每分钟的 Sheets API 写入请求数. node .js

Puppeteer 错误:未下载 Chromium 修订版

NodeJS为exec设置环境变量

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

错误:大多数中间件(如 bodyParser)不再与 Express Bundle

NodeJS 中的 HTTPS 请求

我可以让 node --inspect 自动打开 Chrome

如何创建安全(TLS/SSL)Websocket 服务器

Npm postinstall 仅用于开发