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]

オブジェクトをループせずに、オブジェクト内の true/false ブール値を置き換えるちょっとした「汚いトリック」:

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