2017-08-01 115 views
0

在這一點上,我檢查是否存在一個Node.js的對象元素,並通過執行獲得的價值:如何檢查是否一個JavaScript的布爾元素存在

if(req.body.name) item.name = req.body.name; 

但是,如果我想要做的相同的布爾元素,它不起作用。 如果傳遞的布爾是真實的,沒有問題,但如果傳遞的布爾是假的,如果語句失敗,但是,我需要它的價值:

if(req.body.active) item.active = req.body.active; // works only if true 

是否有更好的方法來檢查,如果一個元素在一個對象中存在並驗證它的布爾值?

+0

'如果(req.body && req.body.active!==未定義) {...}' – notgiorgi

回答

2

幾下,你可能想在:

if("active" in req.body) 
+0

選擇了這個解決方案,因爲它對我來說是最短和最清晰的一個。感謝所有的快速答案! – stijnpiron

+0

它看起來像最短,但它不反映值,如果它不是布爾值。 –

+0

因爲在那個時候,我只需要檢查字段是否存在,這是正確的方法,對不對?分配值後發生,我的示例代碼只是一個例子,沒有實際使用的功能... – stijnpiron

0

你應該使用這個代替:req.body.hasOwnProperty(「主動」)

它將只檢查屬性的存在。

1

您可以使用檢查布爾值,然後評估值。

item.active = typeof req.body.name === 'boolean' && req.body.name 
1

此時,我檢查是否存在並且通過這樣做得到的值在node.js中對象元素:

如果(req.body.name)item.name = req.body 。名稱;

如果req.body.name是空字符串(用引號引起,因爲空名稱很奇怪,但可能不是錯誤),這也會「失敗」。

我能想到以下幾點:

  • if ('name' in req.body)
  • hasOwnPropertyif (req.body.hasOwnProperty('name')
  • 的typeof:要麼if (typeof req.body.name === 'boolean')if (typeof req.body.name !== 'undefined')

然而,他們都有優點和缺點,我想命名爲完整起見:(但是這可能不是在現代瀏覽器是可能的),如果有人不喜歡的東西undefined = 'foo'

  • tyepof失敗
  • hasOwnProperty如果屬性存在失敗,但被繼承
  • in沒有(這可能是不期望的,這取決於使用情況)