如何知道对象是否为数组?
var x=[];
console.log(typeof x);//output:"object"
alert(x);//output:[object Object]
console.log(x.valueOf())//output:<blank>? what is the reason here?
console.log([].toString()); also outputs <blank>
Object.prototype.toString.call(x) output:[object Array] how?
自console.log([]。toString());输出:空白
第一
为什么我在最后一句话中得到空白?
第二
有没有办法确切知道对象是什么:数组或普通对象({})没有x.join()等各自方法的帮助,表示x是一个数组,不是这样的。
实际上,在jquery选择中,如$(“p”)返回jquery对象,所以如果我使用
console.log(typeof $("p"));//output:"object
我只是想知道对象的实际名称。请知道。谢谢你的帮助
答案 0 :(得分:9)
在纯JavaScript中,您可以使用以下跨浏览器方法:
if (Object.prototype.toString.call(x) === "[object Array]") {
// is plain array
}
jQuery有special method:
if ($.isArray(x)) {
// is plain array
}
答案 1 :(得分:4)
您可以使用instanceof
。这是一些FireBug测试:
test1 = new Object();
test2 = new Array();
test3 = 123;
console.log(test1 instanceof Array); //false
console.log(test2 instanceof Array); //true
console.log(test3 instanceof Array); //false
答案 2 :(得分:2)
最佳做法是在目标对象上调用Object.prototype.toString()
,该对象显示内部[[Class]]
属性名称。
Object.prototype.toString.call( x ); // [object Array]
这有一个优点,它适用于任何和所有对象,无论你是否在多个框架/窗口环境中工作,这会导致使用x instanceof Array
时出现问题。
较新的ES5实施,还为您提供方法Arrays.isArray()
,该方法返回true
或false
。
Array.isArray( x ); // true
最后但并非最不重要的是,jQuery有自己的.isArray()
方法,它也返回一个布尔值
jQuery.isArray( x ); // true
答案 3 :(得分:1)
简单:
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
答案 4 :(得分:1)
http://api.jquery.com/jQuery.isArray/
if($.isArray(x)){
alert("isArray");
}
答案 5 :(得分:0)
我认为你正在寻找这样的东西:
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
希望这会有所帮助。有点慢:P