此时,我检查node.js对象中的元素是否存在并通过执行以下操作获取值:
if(req.body.name) item.name = req.body.name;
但是,如果我想对布尔元素执行相同操作,则它无效。 如果传递的boolean为true,没问题,但如果传递的boolean为false,则if语句失败,但是,我需要它的值:
if(req.body.active) item.active = req.body.active; // works only if true
有没有更好的方法来检查对象中的元素是否存在并验证它的布尔值?
答案 0 :(得分:2)
一些,你可能想要:
if("active" in req.body)
答案 1 :(得分:1)
您可以使用检查布尔值,然后评估该值。
item.active = typeof req.body.name === 'boolean' && req.body.name
答案 2 :(得分:1)
此时,我检查node.js对象中的元素是否存在并通过执行以下操作获取值:
if(req.body.name)item.name = req.body.name;
这也将失败"如果req.body.name
是一个空字符串(放入引号,因为空名称很奇怪,但可能不是错误)。
我能想到以下几点:
if ('name' in req.body)
if (req.body.hasOwnProperty('name')
if (typeof req.body.name === 'boolean')
或if (typeof req.body.name !== 'undefined')
然而,所有这些都有优点和缺点,我想为了完整性而命名:
tyepof
如果有人做undefined = 'foo'
这样的事情会失败(但现代浏览器可能无法做到这一点)hasOwnProperty
会失败,但会被继承in
没有(可能不需要,具体取决于用例)答案 3 :(得分:0)
你应该使用它:req.body.hasOwnProperty(' active')
它只会检查属性是否存在。
答案 4 :(得分:0)
对我来说,以下代码非常有效:
if(req.body && typeof req.body.name ==='boolean')
它适用于名称未定义或名称为布尔值或名称非布尔值或正文不存在的所有情况。它可以处理所有情况。