gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:48:49 26 4
gpt4 key购买 nike

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

对象可能看起来像 {"0":"string","1":"string","length":"2"} 但我不想要它如果它实际上是一个看起来像数组的对象,则以数组的形式出现。

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

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

最佳答案

  • Array.isArray

原生 V8 功能。它很快,它总是正确的。这是 ES5 的一部分。

  • arr instanceof 数组

检查对象是否由数组构造函数创建。

下划线的方法。这是从他们的源代码中截取的片段

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 代码,我倾向于避免使用它来实现可移植性。

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

关于JavaScript:检测参数是否是数组而不是对象(Node.JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com