2012-07-12 62 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