开发者社区> 问答> 正文

JavaScript:检测参数是否为数组而不是对象(Node.JS)

我应该如何检测参数是否为数组,因为typeof []return,'object'并且我想区分数组和对象。

对象可能看起来像,{"0":"string","1":"string","length":"2"}但如果它实际上是对象看起来像数组,我不希望它作为数组出现。

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

我正在使用与Chrome相同的基于V8的Node.JS。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 14:05:17 687 0
1 条回答
写回答
取消 提交回答
  • Array.isArray 原生V8功能。快速,总是正确的。这是ES5的一部分。

    arr instanceof Array 检查对象是否使用数组构造函数创建。

    _.isArray // underscore method. 下划线的方法。这是摘自其来源的摘录

    var toString = Object.prototype.toString, nativeIsArray = Array.isArray; _.isArray = nativeIsArray || function(obj) { return toString.call(obj) === '[object Array]'; }; 此方法接受一个对象并Object.prototype.toString在其上调用该方法。这将始终返回[object Array]数组。

    根据我的亲身经历,我发现询问该toString方法是最有效的,但它不如ES5代码那么短或可读性instanceof Array也不如Array.isArrayES5代码快,我倾向于避免将其用于可移植性。

    我个人建议您尝试使用underscore,这是其中包含通用实用程序方法的库。它具有许多有用的功能,可以使您的代码干燥。

    2020-02-08 14:05:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载