JavaScript:解析bool
是否有一个单独的函数(或语言结构)可用于仅计算以下值,使其成为JavaScript:解析bool,javascript,parsing,boolean,Javascript,Parsing,Boolean,是否有一个单独的函数(或语言结构)可用于仅计算以下值,使其成为true(以及任何其他值成为false) 下面将删除所有空白,将其更改为小写,并将其与字符串literaltrue进行比较。将返回true值的另一种情况是当传递到parseInt()时返回1的数字 假设你指的是这些例子,你真正的意思是: 解释为字符串,仅包含不区分大小写的单词“true”,周围有可选的空格 解释为数字,计算结果正好为1 以下两个条件将过滤掉所有异常值 /^\s*true\s*$/i.test(value) || Num
true
(以及任何其他值成为false
)
下面将删除所有空白,将其更改为小写,并将其与字符串literal
true
进行比较。将返回true
值的另一种情况是当传递到parseInt()时返回1
的数字
假设你指的是这些例子,你真正的意思是:
解释为字符串,仅包含不区分大小写的单词“true”,周围有可选的空格
解释为数字,计算结果正好为1
以下两个条件将过滤掉所有异常值
/^\s*true\s*$/i.test(value) || Number(value) == 1
~trueValues.indexOf(某物)
。(您确实指定了“仅以下值”。)可能重复:您给定的所有值在强制转换为布尔值时都将计算为true
。你想完成什么?听起来有点恶心。您希望\t tRUe
为tRUe
,但\t tRe
为false
。也许你应该重新考虑你的需求。谁都知道,如何区分1.00
和1
?很好的观点,更新后看起来更像你的解决方案,只是有一个.trim()
。。。有争议哪一个更好,但我喜欢你的简单易读。
if(!String.prototype.trim) {
bool = (val.replace(/^\s\s*/, '').replace(/\s\s*$/, '').toLowerCase() === "true" || Number(val) === 1)
} else {
bool = (val.trim().toLowerCase() === "true" || Number(val) === 1)
}
/^\s*true\s*$/i.test(value) || Number(value) == 1