我应该如何检测参数是否为数组,因为typeof []return,'object'并且我想区分数组和对象。
对象可能看起来像,{"0":"string","1":"string","length":"2"}但如果它实际上是对象看起来像数组,我不希望它作为数组出现。
JSON.parse并JSON.stringify能够做出这种区分。我该怎么做?
我正在使用与Chrome相同的基于V8的Node.JS。 问题来源于stack overflow
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,这是其中包含通用实用程序方法的库。它具有许多有用的功能,可以使您的代码干燥。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。