将问题与Javascript中的If-else语句进行比较
对于相同的JSON数据,我有两个条件:将问题与Javascript中的If-else语句进行比较,javascript,jquery,Javascript,Jquery,对于相同的JSON数据,我有两个条件: { "selectionId":124, "selectionDate":"2070-01-01", "selectionAudit":null, "letter":[ { "letterNo":13, "letterId":1, "inout":"out", "inoutNo":"12332466544", "inou
{
"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 trdatasecondable。我尝试使用if条件比较字母
是否为空:
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");
}
虽然
“字母”:[]
为空,但它不进入其他部分。在比较时,我还尝试了trDataSecondTable.letter.length!=0但它也没有进入其他部分 您可以检查数组的长度
if (trDataSecondTable.letter.length) {
// letter has some elements
} else {
// no elements
}
您可以检查数组的长度
if (trDataSecondTable.letter.length) {
// letter has some elements
} else {
// no elements
}
您的情况应检查null
和长度:
if (trDataSecondTable.letter != null && trDataSecondTable.letter.length > 0)
在访问length
属性之前检查null
非常重要,因为它保证您不会尝试访问null
上的length
属性,这将引发异常。这一点很重要,因为数据很少可靠
由于&&
运算符的作用,如果第一次检查失败,将不会对第二次检查进行评估
实际上,更安全的方法是检查值是否真实,因为这将适用于null
和未定义的:
if (trDataSecondTable.letter && trDataSecondTable.letter.length > 0)
您的情况应检查null
和长度:
if (trDataSecondTable.letter != null && trDataSecondTable.letter.length > 0)
在访问length
属性之前检查null
非常重要,因为它保证您不会尝试访问null
上的length
属性,这将引发异常。这一点很重要,因为数据很少可靠
由于&&
运算符的作用,如果第一次检查失败,将不会对第二次检查进行评估
实际上,更安全的方法是检查值是否真实,因为这将适用于null
和未定义的:
if (trDataSecondTable.letter && trDataSecondTable.letter.length > 0)
我认为这个条件已经足够了
if(trDataSecondTable.letter.length)
我认为这个条件已经足够了
if(trDataSecondTable.letter.length)
空数组的长度
为零,而不是null
,在比较时,我还尝试了trDataSecondTable.letter.length!=0,但它也没有进入else部分
,这是检查空数组的正确方法。您的逻辑中一定还有另一个问题。请确保[]==null
或[]==null
返回false
如果(数组类型!=“未定义”&&array!=null&&array.length!=null&&array.length>0){}空数组的长度
为零,在比较时,我还尝试了trDataSecondTable.letter.length!=0,但它也没有进入else部分
,这是检查空数组的正确方法。您的逻辑中一定存在另一个问题。请确保[]==null
或[]==null
返回false
如果(数组类型!=“未定义”&&array!=null&&array.length!=null&&array.length>0){}你能告诉他为什么要同时检查这两个吗?你能告诉他为什么要同时检查这两个吗?如果不先检查字母是否为null或未定义,就取消引用length属性可能会很危险,对于原始数据更是如此。如果不先检查字母是否为null或未定义,就取消引用length属性可能会很危险,更重要的是原始数据。