Javascript—将1/0&'true'/'false'&true/false转换为布尔值的好方法

Javascript—将1/0&'true'/'false'&true/false转换为布尔值的好方法,javascript,Javascript,我有一个变量,它有时可以作为整数或字符串数字的1/0传递,也可以作为字符串“true”/“false”或实际的布尔值true/false传递。我想把所有的案例都转换成一个实际的布尔值 除了执行一系列if语句和===之外,还有更快捷、更优雅的方法吗?使用具有映射的对象: var translations = { "true": true, "1": true, "false": false, "0": false }; 然后 var my_value = "tru

我有一个变量,它有时可以作为整数或字符串数字的1/0传递,也可以作为字符串“true”/“false”或实际的布尔值true/false传递。我想把所有的案例都转换成一个实际的布尔值


除了执行一系列if语句和===之外,还有更快捷、更优雅的方法吗?

使用具有映射的对象:

var translations = {
    "true": true,
    "1": true,
    "false": false,
    "0": false
};
然后

var my_value = "true";  # or 1, "false", 0... etc
var my_bool = translations[my_value];
在JS中,对象的键通过调用.toString自动转换为字符串,如果我的内存没有出现故障,那么true和true将返回相同的结果。0和0也是一样的

编辑

如果您的环境支持它,则最好使用完全空的对象:

var translations = Object.create(null);
translations['true'] = true;
...

将对象与映射一起使用:

var translations = {
    "true": true,
    "1": true,
    "false": false,
    "0": false
};
然后

var my_value = "true";  # or 1, "false", 0... etc
var my_bool = translations[my_value];
在JS中,对象的键通过调用.toString自动转换为字符串,如果我的内存没有出现故障,那么true和true将返回相同的结果。0和0也是一样的

编辑

如果您的环境支持它,则最好使用完全空的对象:

var translations = Object.create(null);
translations['true'] = true;
...

我想你需要一个特殊的假案例!!evalx做到了这一点-但我不知道这会有多快…@jlahd:or!!JSON.parsex,哪个更安全。@Qantas94Heavy肯定是赢家。@Qantas94Heavy很不错。。这应该是答案。我想你需要一个特殊的假案例!!evalx做到了这一点-但我不知道这会有多快…@jlahd:or!!JSON.parsex,哪个更安全。@Qantas94Heavy肯定是赢家。@Qantas94Heavy很不错。。答案应该是+1。您是正确的,但javascript中似乎已经存在一个函数。我不确定。仍在检查:如果您发现它,请共享它:+1您是正确的,但javascript中似乎已经存在一个函数。我不确定。仍在检查:如果找到,请共享: