我有相同的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; 。我想比较,如果该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,而且它没有进入其他部分。
我认为这种情况是足够
if(trDataSecondTable.letter.length)
你的情况应该检查这两个null
和长度:
if (trDataSecondTable.letter != null && trDataSecondTable.letter.length > 0)
难道是非常重要的访问null
财产,因为它保证你不会尝试访问length
的length
财产,这将引发异常之前检查null
。这很重要,因为数据是很少可靠。
由于&&
操作的,如果第一个检查失败,第二次检查将不进行评估。
事实上,一个更安全的方法是检查值truthy,因为这会为null
和undefined
工作:
if (trDataSecondTable.letter && trDataSecondTable.letter.length > 0)
你可以检查数组的length
。
if (trDataSecondTable.letter.length) {
// letter has some elements
} else {
// no elements
}