Javascript检查字符串是否为true或false并转换为Boolean

ngp*_*und 9 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();
}
Run Code Online (Sandbox Code Playgroud)

Tib*_*bos 15

最可读:

var thisval = $(this).val();
ao[id] = thisval === 'true' ? true : 
         thisval === 'false' ? false : 
         thisval;
Run Code Online (Sandbox Code Playgroud)

基于条件运算符的单行程:

var thisval = $(this).val();
ao[id] = thisval === 'true' ? true : (thisval === 'false' ? false : thisval);
Run Code Online (Sandbox Code Playgroud)

基于||的单线程 和&&行为:

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

最短的单线(上述组合):

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


Kha*_* TO 8

试试JSON.parse().

"true""false"实际上是JSON表示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();
}
Run Code Online (Sandbox Code Playgroud)

DEMO