Javascript 检查字符串是真还是假并转换为布尔值

新手上路,请多包涵

是否有更好的方法来改进以下语句以检查 val()'true' 还是 'false' 并且如果它是布尔值,那么它会改变。原因是,某些值可能是一个词。

 var thisval = $(this).val();
if (thisval == "true"){
    ao[id] = true;
} else if (thisval == "false"){
    ao[id] = false;
} else {
    ao[id] = $(this).val();
}

原文由 ngplayground 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 563
2 个回答

最易读:

 var thisval = $(this).val();
ao[id] = thisval === 'true' ? true :
         thisval === 'false' ? false :
         thisval;

基于条件运算符的一行:

 var thisval = $(this).val();
ao[id] = thisval === 'true' ? true : (thisval === 'false' ? false : thisval);

基于 || 的一行代码和 && 行为:

 var thisval = $(this).val();
ao[id] = thisval === 'true' || (thisval !== 'false') && thisval || false;

最短的一行(以上的组合):

 var thisval = $(this).val();
ao[id] = thisval === 'true' || (thisval === 'false' ? false : thisval);

原文由 Tibos 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试 JSON.parse()

"true""false" 实际上true false 这就是 ajax 从服务器端将 json 对象解析为字符串的方式。如果在服务器端,我们返回 true、false => 浏览器将接收它作为字符串“true”或“false”(json 表示)

 if ( $(this).val() == "true" ||  $(this).val() == "false") {
    ao[id] = JSON.parse($(this).val());
}else {
    ao[id] = $(this).val();
}

演示

原文由 Khanh TO 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题