This works with double negation:
var obj = { prop1: 1, prop2: '1', prop3: 0, prop4: '0', prop5: true, prop6: false, prop7: 'test' }, prop, val; for(prop in obj) { val = Number(obj[prop]); !isNaN(val) && (obj[prop] = !!val); }
Results in (JSON stringified):
{ "prop1": true, "prop2": true, "prop3": false, "prop4": false, "prop5": true, "prop6": false, "prop7": "test" }
Simon source share