我正在尝试编写一个函数,它要么接受字符串列表,要么接受单个字符串。如果它是一个字符串,那么我想把它转换成一个只有一个项的数组,这样我就可以在上面循环,而不用担心出错。
那么如何检查变量是否为数组?
我正在尝试编写一个函数,它要么接受字符串列表,要么接受单个字符串。如果它是一个字符串,那么我想把它转换成一个只有一个项的数组,这样我就可以在上面循环,而不用担心出错。
那么如何检查变量是否为数组?
当前回答
如果可以传递给此函数的仅有两种值是字符串或字符串数组,请保持简单,并使用字符串类型检查:
function someFunc(arg) {
var arr = (typeof arg == "string") ? [arg] : arg;
}
其他回答
您还可以检查数组的长度属性。当您尝试访问数组的长度属性时,它将返回一个数字(对于空数组为0),而如果您尝试访问对象的长度属性,则它将返回undefined。
if(Object.prototype.toString.call(arrayList) === '[object Array]') {
console.log('Array!');
}
在现代浏览器中,您可以执行以下操作:
Array.isArray(obj)
(支持Chrome 5、Firefox 4.0、Internet Explorer 9、Opera 10.5和Safari 5)
为了实现向后兼容性,可以添加以下内容:
// Only implement if no native implementation is available
if (typeof Array.isArray === 'undefined') {
Array.isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
};
如果使用jQuery,可以使用jQuery.isArray(obj)或$.isArra(obj)。如果使用Undercore.js,可以使用_.isArray(obj。
如果不需要检测在不同帧中创建的阵列,也可以只使用instanceof:
obj instanceof Array
jQuery还提供了一个$.isArray()方法:
var a=[“a”,“AA”,“AAA”];if($.isArray(a)){alert(“a是一个数组!”);}其他{alert(“a不是数组!”);}<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script>
检查此项的简单函数:
function isArray(object)
{
return object.constructor === Array;
}
这个问题只有一行解决方案
x instanceof Array
其中x是变量,如果x是数组,则返回true,如果不是,则返回false。