JavaScript:将字符串/数字转换为数字或null,返回0表示0?
在我的JavaScript中,我目前有一个很好的表达式:JavaScript:将字符串/数字转换为数字或null,返回0表示0?,javascript,Javascript,在我的JavaScript中,我目前有一个很好的表达式: var b = { items: +a || null }; 如果a是字符串或大于0的数字,则将b.items设置为数字;如果a为null/未定义,则设置为null 但是,如果a为0,它也会返回null。现在我想更改它,使其在a为0时返回0。(这似乎是处理真实数据的正确方法:如果它是零,我们想知道它是零,如果它不存在,我们也想知道。) 我已经看过并尝试过这两种: items: 1/a ? +a: null items: isNaN
var b = {
items: +a || null
};
如果a
是字符串或大于0的数字,则将b.items
设置为数字;如果a
为null
/未定义,则设置为null
但是,如果a
为0,它也会返回null
。现在我想更改它,使其在a
为0时返回0。(这似乎是处理真实数据的正确方法:如果它是零,我们想知道它是零,如果它不存在,我们也想知道。)
我已经看过并尝试过这两种:
items: 1/a ? +a: null
items: isNaN(a) ? null : +a
但如果a
为空,则这两个函数都返回0。它们应该返回null
如果a
为0,是否有方法返回0;如果未定义,是否有方法返回null
更新:下面是表达式需要执行的所有操作的摘要:
"72" -> 72
"0" -> 0
1 -> 1
0 -> 0
null -> null
undefined -> null
您可以在三元运算符中检查a
的类型
var b = {
items: typeof (+a) == 'number' ? +a : null
};
演示:
var b={
items:typeof(+“0”)=“number”?+“0”:空
};
警报(b.项目)代码>您可以专门测试空值和未定义值
var b = {
items: ('undefined' === typeof a || null === a) ? null : +a
};
试试这个
var b = {
items: +a ||(a==0?0:null)
};
这也应该起作用:
var b = {
items: a != null? +a : null
};
基于我也想转换字符串,不过。。。包括字符串“0”
@Richard,它返回null,它应该返回什么呢?它会返回吗?我得到Uncaught ReferenceError:a未定义
(在控制台中测试)。@Richard,这只表明您在测试之前没有定义a
。对我来说,只需添加var a=undefined在上面的代码片段使其正常工作之前,请执行代码>。