1

我有一个对象,它对某些键具有truefalse值。我需要找到哪些键具有布尔值并将它们分别转换为 1 和 0,我该怎么做?非常感谢任何帮助或建议。

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

1 回答 1

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;

[根据评论编辑2]

在不循环对象的情况下替换对象中的真/假布尔值有点“肮脏的技巧”:

var obj2 = JSON.parse(
              JSON.stringify(obj)
                .replace(/:true/gi,':1')
                .replace(/:false/gi,':0')
            );
于 2012-07-12T09:43:39.400 回答