在JavaScript中如果else语句比较问题

问题描述 投票:0回答:3

我有相同的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,而且它没有进入其他部分。

javascript jquery
3个回答
0
投票

我认为这种情况是足够

if(trDataSecondTable.letter.length)

4
投票

你的情况应该检查这两个null和长度:

if (trDataSecondTable.letter != null && trDataSecondTable.letter.length > 0)

难道是非常重要的访问null财产,因为它保证你不会尝试访问lengthlength财产,这将引发异常之前检查null。这很重要,因为数据是很少可靠。

由于&&操作的,如果第一个检查失败,第二次检查将不进行评估。

事实上,一个更安全的方法是检查值truthy,因为这会为nullundefined工作:

if (trDataSecondTable.letter && trDataSecondTable.letter.length > 0)

1
投票

你可以检查数组的length

if (trDataSecondTable.letter.length) {
    // letter has some elements
} else {
    // no elements
}
© www.soinside.com 2019 - 2024. All rights reserved.