怎樣證明一個(gè)對(duì)象是數(shù)組 如何判斷json字符串是對(duì)象還是數(shù)組?
如何判斷json字符串是對(duì)象還是數(shù)組?oc的數(shù)組NSArray本身就是一個(gè)類(lèi),其實(shí)例那就是一個(gè)對(duì)象。。。確定有沒(méi)數(shù)組,在換取的結(jié)果idresultObj可可以確定if([resultObjisKind
如何判斷json字符串是對(duì)象還是數(shù)組?
oc的數(shù)組NSArray本身就是一個(gè)類(lèi),其實(shí)例那就是一個(gè)對(duì)象。
。。確定有沒(méi)數(shù)組,在換取的結(jié)果idresultObj可可以確定if([resultObjisKindofClass[NSArrayclass]]){//是一個(gè)array}argumentsif([resultObjisKindofClass[NSDictionaryclass]]){//是一個(gè)字典}
react怎么判斷state里面是一個(gè)數(shù)組?
方法一:使用instanceof方法
instanceof應(yīng)用于判斷一個(gè)變量有無(wú)某個(gè)對(duì)象的實(shí)例,左邊操作數(shù)是一個(gè)對(duì)象,右邊操作數(shù)是一個(gè)函數(shù)對(duì)象的或函數(shù)構(gòu)造器。原理是按照推測(cè)左操作數(shù)的對(duì)象的原型鏈上如何確定更具右操作數(shù)的構(gòu)造函數(shù)的prototype屬性。
ainstanceofbalert(true):alert(false)//注意一點(diǎn)b值是你的想可以確定的那種數(shù)據(jù)類(lèi)型,并非一個(gè)字符串,比如說(shuō)Array。
舉一個(gè)例子:
vararr[];
console.log(arrinstanceofArray)//返回true
方法二:不使用constructor方法
在W3C定義中的定義:constructor屬性趕往對(duì)創(chuàng)建戰(zhàn)隊(duì)此對(duì)象的數(shù)組函數(shù)的摘錄,那就是趕往對(duì)象相對(duì)應(yīng)的構(gòu)造函數(shù)。從定義上來(lái)說(shuō)跟instanceof不太完全不同,但效果也是一樣的的。
這樣的話(huà)推測(cè)各種類(lèi)型的方法:
console.log([].constructorArray);//true
console.log({}.constructorObject);//true
console.log(String);//true
console.log((123).constructorNumber);//true
console.log(Boolean);//true
盡量:
可以使用instaceof和construcor,被推測(cè)的array前提是是在當(dāng)前頁(yè)面聲明的!諸如,一個(gè)頁(yè)面(父頁(yè)面)有一個(gè)框架,框架中語(yǔ)句了一個(gè)頁(yè)面(子頁(yè)面),在子頁(yè)面中聲明了一個(gè)array,并將其定義變量給父頁(yè)面的一個(gè)變量,這時(shí)可以確定該變量,Array;會(huì)返回false;
原因:
1、array不屬于摘錄型數(shù)據(jù),在傳遞過(guò)程中,不僅僅是語(yǔ)句地址的傳遞。
2、每個(gè)頁(yè)面的Array原生對(duì)象所直接引用的地址是都一樣的,在子頁(yè)面聲明的array,所對(duì)應(yīng)的構(gòu)造函數(shù),是子頁(yè)面的Array對(duì)象;父頁(yè)面來(lái)進(jìn)行判斷,不使用的Array的確等于零子頁(yè)面的Array。
方法三:不使用(arr)[objectArray]方法
functionisArray(o){
return(o);
}
vararr[2,5,6,8];
varstring{name:zhangsan,age:25};
varfnfunction(){}
console.log(isArray(arr));//[objectArray]
console.log(isArray(string));//[objectObject]
console.log(isArray(fn));//[objectfunction]
方法四:ES5定義了
([])//true