我的相同JSON数据有两个条件:
{
"selectionId":124,
"selectionDate":"2070-01-01",
"selectionAudit":null,
"letter":[
{
"letterNo":13,
"letterId":1,
"inout":"out",
"inoutNo":"12332466544",
"inoutDate":"2070-01-01",
"letterIssuedSubBy":null,
"letterFile":null,
"representativeName":null,
"representativeNameEng":null,
"selectionId":124,
"assessmentNo":null,
"entryBy":"user98",
"rStatus":"I",
"others":null,
"signatary":"qwerrt",
"letterBox":null,
"imageFile":null,
"imageTitle":null,
"reminderYesNo":"N"
}
]
}
相同的JSON,字母数组为空结构:
{
"selectionId":124,
"selectionDate":"2070-01-01",
"selectionAudit":null,
"letter":[]
}
所有这些值都存储在
var trDataSecondTable; 。我尝试通过使用if条件来比较letter
是否为空:
if(trDataSecondTable.letter != null) {
console.log("asasfasdfdsfdsfds");
$("#inoutDate").val(trDataSecondTable.letter[0].inoutDate);
$("#inoutNo").val(trDataSecondTable.letter[0].inoutNo);
$("#signatary").val(trDataSecondTable.letter[0].signatary);
}
else
{
console.log("entered in else part");
}
尽管"letter":[]
为空,但没有进入其他部分。在比较时,我还尝试了 trDataSecondTable.letter.length!= 0 ,但是它没有进入其他部分。
答案 0 :(得分:4)
您的条件应检查null
和长度:
if (trDataSecondTable.letter != null && trDataSecondTable.letter.length > 0)
在访问null
属性之前检查length
很重要,因为它可以确保您不会尝试访问length
上的null
属性,这会增加一个例外。这很重要,因为数据很少可靠。
由于&&
运算符,如果第一个检查失败,则不会评估第二个检查。
实际上,一种更安全的方法是检查该值是否为真,因为这将适用于null
和undefined
:
if (trDataSecondTable.letter && trDataSecondTable.letter.length > 0)
答案 1 :(得分:1)
您可以检查数组的length
。
if (trDataSecondTable.letter.length) {
// letter has some elements
} else {
// no elements
}
答案 2 :(得分:0)
我认为这种情况就足够了
if(trDataSecondTable.letter.length)