2012-07-12 65 views
1

我有一個有值真正某些keys.I需要找到哪些鍵已經有了一個布爾值,並將其轉換爲對象1和0分別,我該怎麼做?任何幫助或建議非常感謝。檢查布爾值,並將其轉換爲數字對象

var obj ={ 
    "serviceid": 123, 
    "accountid": 456, 
    "name": "Test in progress", 
    "number": [ 
     {'setNumber':true}, 
     {'setNumber':false}, 
    ], 
    "settings": { 
     "playback": false, 
     "attachfile": true, 
    } 
} 

回答

3

您可以轉換使用Number+ operator一個布爾值。

Number(true); //=> 1 
Number(false); //=> 0 
+(true);  //=> 1 
+(false);  //=> 0 

[基於評論編輯]
您可以使用typeof來檢查,如果值計算結果爲布爾:

var somebool = true 
    ,sombool_isBoolean = /^boolean$/i.test(typeof somebool) //=>true 
    ,nobool = 'true' 
    ,nobool_isBoolean = /^boolean$/i.test(typeof nobool) //=>false 
; 

所以你反對,你可以這樣做:

var objnr0 = obj.number[0].setNumber; 
obj.number[0].setNumber = /^boolean$/i.test(objnr0) ? +(objnr0) : objnr0; 

[edit2 based on com發言:]

一個「髒特技」的位,以取代在對象真/假布爾值不循環的對象:

var obj2 = JSON.parse(
       JSON.stringify(obj) 
       .replace(/:true/gi,':1') 
       .replace(/:false/gi,':0') 
      ); 
+1

'parseInt函數(真)'將試圖'parseInt函數(「真」 )'('NaN') – Esailija 2012-07-12 09:44:59

+0

是的 - 一個鍵盤*的滑動,我糾正了這一點。 – KooiInc 2012-07-12 09:45:25

+0

感謝球員,但我怎麼檢查哪些鍵已從對象 – manraj82 2012-07-12 09:46:55