从JSON对象:'0'是假的?

时间:2015-07-17 20:27:26

标签: javascript json

我正在获取具有此属性的JSON对象

id: "23132772"
isAvailable: "1",
isSelected: "0",
maxPoints: "0",
minPoints: "0",
name: "Parlay",
placeBetIsAvailable: "0"

此JSON来自名为betType

的对象

所以我想说placeBetIsAvailable false时我想与placeBetIsAvailable: "0"合作。

如你所见,我有if(!betType.placeBetIsAvailable)

所以,在我的代码中,我能够做到:

if(betType.placeBetIsAvailable === '0')

或者我应该指定

{ "query": { "nested" : { "path" : "Purchases", "score_mode" : "avg", "query" : { "bool" : { "must" : [ { "match" : {"Purchases.Country" : "US"} }, { "range" : "Purchases.Price": { "lte": 5 } } ] } } } } }

4 个答案:

答案 0 :(得分:5)

JavaScript中的字符串"0" truthy ,而数字0则不是。如果你的JSON用引号中的零编码,那么它们就是非空字符串。

答案 1 :(得分:1)

如果它是一个数字而不是一个字符串你可以这样做,但由于它是一个字符串中包含字符的字符串(不是空字符串''),它不再是假的。要解决这个问题,你可以这样做

if(!parseInt(betType.placeBetIsAvailable)) 

if(!+betType.placeBetIsAvailable)

这可能比仅仅做更多的工作

if(betType.placeBetIsAvailable === '0')

答案 2 :(得分:1)

如果你使用字符串" 0"那么构造if(!betType.placeBetIsAvailable)是不合适的。和" 1"编码truefalse。在地址栏中输入以查看原因。

javascript:alert(["0", !"0", "1", !"1"])

基本上,!" 0"和!" 1"两者都评估为false

如果确实无法对服务器返回的JSON做任何事情,则应使用if(betType.placeBetIsAvailable === '0')形式。

答案 3 :(得分:1)

尝试将其转换为数字并使用!将其转换为布尔值

if(!!Number(betType.placeBetIsAvailable))