【问题标题】:Javascript - Nice way to convert 1/0 & 'true'/'false' & true/false to booleanJavascript - 将 1/0 & 'true'/'false' & true/false 转换为布尔值的好方法
【发布时间】:2014-06-18 09:17:02
【问题描述】:

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

除了做一堆if 语句和=== 之外,还有更快更优雅的方法吗?

【问题讨论】:

  • 我认为你需要一个“假”的特殊情况
  • !!eval(x) 可以解决问题 - 但我不知道这会有多快...
  • @jlahd: 或!!JSON.parse(x),这样更安全。
  • @Qantas94Heavy 绝对是赢家。
  • @Qantas94Heavy nice one.. 它应该是答案。

标签: javascript


【解决方案1】:

使用带有映射的对象:

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;
...

【讨论】:

  • +1 你是对的,但 javascript 中似乎已经存在一个函数。我不确定。仍在检查:)
  • 找到了就分享一下吧:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2011-04-27
  • 2023-03-28
  • 2014-01-17
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多