Identifying Array Object
本问题已经有最佳答案,请猛点这里访问。
如何知道一个对象是否是数组?
1 2 3 4 5 6 7 | 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对象,因此如果我使用
1 | console.log(typeof $("p"));//output:"object |
我只想知道物体的实际名称,就这样,谢谢你的帮助
在纯JavaScript中,您可以使用以下跨浏览器方法:
1 2 3 | if (Object.prototype.toString.call(x) ==="[object Array]") { // is plain array } |
jquery有特殊的方法:
1 2 3 | if ($.isArray(x)) { // is plain array } |
您可以使用
1 2 3 4 5 6 7 | 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 |
最佳实践是对目标对象调用
1 | Object.prototype.toString.call( x ); // [object Array] |
这是一种出现,它适用于任何和每个对象,不管您是否在多帧/窗口环境中工作,这会导致使用
更新的ES5实现还提供了方法
1 | Array.isArray( x ); // true |
最后,jquery有自己的
1 | jQuery.isArray( x ); // true |
http://api.jquery.com/jquery.isarray/
1 2 3 | if($.isArray(x)){ alert("isArray"); } |
简单的:
1 2 3 | if( Object.prototype.toString.call( someVar ) === '[object Array]' ) { alert( 'Array!' ); } |
我想你在找这样的东西:
1 2 3 | if( Object.prototype.toString.call( someVar ) === '[object Array]' ) { alert( 'Array!' ); } |
希望这有帮助。稍微慢一点:P