JavaScript判斷一個變數是物件還是陣列
typeof都返回object
在JavaScript中所有資料型別嚴格意義上都是物件,但實際使用中我們還是有型別之分,如果要判斷一個變數是陣列還是物件使用typeof搞不定,因為它全都返回object
1 2 3 4 5 6 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
document.write(
' o typeof is '
+ typeof
o);
document.write(
' <br />' );
document.write(
' a typeof is '
+ typeof
a);
|
執行:
o typeof is object
a typeof is object
因此,我們只能放棄這種方法,要判斷是陣列or物件有兩種方法
第一,使用typeof加length屬性
陣列有length屬性,object沒有,而typeof陣列與物件都返回object,所以我們可以這麼判斷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
var
getDataType = function (o){
if ( typeof o == 'object' ){
if (
typeof o.length ==
'number' ){
return
'Array' ;
} else {
return
'Object' ;
}
} else {
return
'param is no object type' ;
}
};
alert( getDataType(o) );
// Object
alert( getDataType(a) );
// Array
alert( getDataType(1) );
// param is no object type
alert( getDataType( true ) );
// param is no object type alert( getDataType( 'a' ) );
// param is no object type
|
第二,使用instanceof
使用instanceof可以判斷一個變數是不是陣列,如:
1 2 3 4 5 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
alert( a
instanceof Array );
// true
alert( o
instanceof Array );
// false
|
也可以判斷是不是屬於object
1 2 3 4 5 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
alert( a
instanceof Object );
// true
alert( o
instanceof Object );
// true
|
但陣列也是屬於object,所以以上兩個都是true,因此我們要利用instanceof判斷資料型別是物件還是陣列時應該優先判斷array,最後判斷object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
var
getDataType = function (o){
if (o
instanceof
Array){
return
'Array'
} else
if ( o instanceof
Object ){
return
'Object' ;
} else {
return
'param is no object type' ;
}
};
alert( getDataType(o) );
// Object
alert( getDataType(a) );
// Array
alert( getDataType(1) );
// param is no object type
alert( getDataType( true ) );
// param is no object type
alert( getDataType( 'a' ) );
// param is no object type
|
如果你不優先判斷Array,比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var
o = { 'name' : 'lee'
};
var
a = [ 'reg' , 'blue' ];
var
getDataType = function (o){
if (o
instanceof
Object){
return
'Object'
} else
if ( o instanceof
Array ){
return
'Array' ;
} else {
return
'param is no object type' ;
}
};
alert( getDataType(o) );
// Object
alert( getDataType(a) );
// Object
alert( getDataType(1) );
// param is no object type
alert( getDataType( true ) );
// param is no object type
alert( getDataType( 'a' ) );
// param is no object type
|
那麼陣列也會被判斷為object。
相關推薦
JavaScript判斷一個變數是物件還是陣列
typeof都返回object 在JavaScript中所有資料型別嚴格意義上都是物件,但實際使用中我們還是有型別之分,如果要判斷一個變數是陣列還是物件使用typeof搞不定,因為它全都返回object 1 2 3 4 5 6 var o = { 'name':'lee' }; var a
從javascript判斷一個物件是否為陣列中學習js語法
1,真正的陣列的判斷方法 javascript中最簡單的宣告陣列方法為: var a = []; 判斷是否為陣列的最直接的方法為: a instanceof Array //true a .constructor == Array //true 這裡涉及到一個i
js - 【陣列】怎麼判斷一個變數是陣列型別的?
怎麼判斷一個數組是陣列呢? 其實這個也是一個常考的題目。依稀記得我為數不多的面試經過中都被問道過。 方案一: instanceof variable instanceof Array 解決思路: 使用型別判斷所給的方法 instanceof &nb
JavaScript判斷一個物件是否為空
寫一個函式 isEmptyObject,判斷一個物件是不是空物件 function isEmptyObject(obj){ for(var item in obj){ ret
判斷一個變數是不是陣列Array型別的方法
JavaScript中檢測物件的方法 1.typeof操作符這種方法對於一些常用的型別來說那算是毫無壓力,比如Function、String、Number、Undefined等,但是要是檢測Array的物件就不起作用了。 複製程式碼程式碼如下: alert(type
前端面試紀實(四):如何判斷一個變數是陣列:typeof和instanceof
1 typeof 這也是面試官問我的一個問題 我的第一反應是typeof。但是正中對方下懷。 > typeof [] 'object' 這樣返回的是object 這是一個JS很怪異的地方。 為什麼很怪異的呢,因為小白往往以{}和[]區分Array和O
怎樣判斷一個變數的型別?
package main import "fmt" var container = []string{"zero", "one", "two"} func main() { container := map[int]str
判斷一個變數是否在兩變數之間
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 bool inRange(int x,int left,int right) 5 { 6 if(left>right) return inRang
JavaScript判斷是否為物件
var obj = {}; 1、toString(推薦)判斷obj的原型,若其原型為物件,根據JavaScript的繼承性,obj即為物件 Object.prototype.toString.call(obj) === ‘[Object Object]’ 2、c
判斷一個js物件是否是Array
今天在做題時遇到這個問題,找答案的時候,發現評論裡大神好多 。 在開發中,我們經常需要判斷某個物件是否為陣列型別,總結判斷某個物件是否是陣列的方法。 1.typeof 操作符 對於Function, String, Number ,Undefined 等幾種型別的物件來說,他完全可
如何判斷一個COM物件是否可用
同事工作中遇到這個問題,不想在建立物件失敗時才知道原來對應的COM物件不可用。自己專案中用到了這個,遂總結一下,希望對大家有用。 要判斷一個COM物件是否有用,首先要判斷該COM物件的CLSID是否在登錄檔中註冊,但註冊了並不能保證其可用,因為如果我誤刪了該COM物件的載體-DLL(或exe),該COM
如何判斷一個C++物件是否在堆疊上
要解答這個問題,其實就是要知道的堆疊的起始地址, 而我們知道堆疊其實就是一段有相同屬性的記憶體頁面,而Windows也是有API讓我們查詢虛擬記憶體的頁面分配情況的。所有我們可以通過VirtualQuery這個API來獲取堆疊的起始地址,然後就可以得到答案了。 BOOL
thinkphp模板裡面判斷一個變數是否存在於一個數組中 相當於in_array() in 或range 標籤
thinkphp 模板裡面可以這樣寫包含操作 //in 標籤 <in name="變數名" value="值1,值2,...">要輸出的內容</in> <in nam
JavaScript - 寫一個純函式 - 求陣列中所有大於`1`的和, 如果都是`負數`或者`空陣列`那麼返回`0`
JavaScript - 寫一個純函式 - 求陣列中所有大於`1`的和, 如果都是`負數`或者`空陣列`那麼返回`0` 推薦使用 第二種 function positiveSum (arr) { // 最讓人接受的方法 var total = 0;
JS中如何判斷一個變數是null/undefined
本文轉自http://blog.csdn.net/sunny_ran/article/details/52572288 JS 中如何判斷 undefined JavaScript 中有兩個特殊資料型別:undefined 和 null,下節介紹了 null 的判斷,下面
javascript判斷一個字串或者數組裡面出現最多的元素及其出現的次數
不多說哈,直接上程式碼: 判斷一個字串: var str = "aabbbcccc"; var obj = {};//定義一個物件來儲存str拆分出來的元素,把一個字元當做key,字元出現的次數當做value 儲存在obj中 for (var i = 0;
js判斷一個元素是否在陣列中
js中存在一個數組,如何判斷一個元素是否存在於這個陣列中呢,首先是通過迴圈的辦法判斷,程式碼如下:var arr = ['a','s','d','f']; console.info(isInArray(arr,'a'));//迴圈的方式 /** * 使用迴圈的方式判斷一個
python3怎麼判斷一個變數的型別(isinstance,type)
兩個方法 一個通用 一個個別用不了的情況下(入list) 1 isinstance def add_key(self,keyname): self.keyname=keyname if isinstance(self.keyname,in
JavaScript判斷一個頁面是否是使用微信開啟,並調跳轉
//判斷是否是微信開啟 var home_index = "{{ path('wap_homepage') }}"; function isWeiXin(){ var ua = window.navigator.userAgent.toLowerCase();
java中怎麼判斷一個字串是否存在陣列中
/*這是一個靜態函式,不用宣告物件就可以用的,如你的類名為Test,在任何情況下都可以呼叫Test.isHave函式*/ public static boolean isHave(String[]