if(array.length===1)条件不适用于长度> 1的数组[关闭]
Posted
技术标签:
【中文标题】if(array.length===1)条件不适用于长度> 1的数组[关闭]【英文标题】:if(array.length===1) condition not working for array of length > 1 [closed] 【发布时间】:2016-03-07 22:23:05 【问题描述】:我的主控制器中有一个if-else
:
var entity = shareDataService.getModalEntity();
if (entity = "NULL" || entity.length === 1)
myDataPromise = getDataService.getDataFromREST(security);
console.log("HERE")
else
myDataPromise = $q.all(getDataService.keepICorrect(security));
console.log("THERE")
;
它从服务shareDataService
获取entities
数据。
entity.length === 1
或entity === "NULL"
时工作正常,但当数组为length
2 或更多时,条件不会将其传递给else
。我无法解决我的原因,我在if-else
之前进行了调试以检查传递给控制器函数的值,当我打算这样做时,数组肯定是length
2+。同样在if-else
之前调试entity.length
显示数组的正确长度。我错过了什么?
【问题讨论】:
错字!实体 == "NULL" What is the correct way to check for string equality in javascript?的可能重复 【参考方案1】:你是在赋值而不是比较
entity = "NULL"
这样试试
entity == "NULL"
建议:
您可以查看 falsy 。
null
,''
,undefined
,0
,NaN
在 javascript 中考虑 falsy
这样试试
if(!entity || entity.length === 1)
【讨论】:
@Sulthan 如果与字符串比较则不是 宾果游戏。我怎么会错过这个。非常感谢:) 只是重申一下,“==”如果是字符串,“===”表示其他所有内容? 感谢您的建议,但是如果没有检测到数组,则需要使用实际的字符串“NULL”,如果将字符串作为“NULL”传递,它只是一个字符串还是可以认为是假的? @Nope "NULL" 不等于 null【参考方案2】:var entity = shareDataService.getModalEntity();
if (entity = "NULL" || entity.length === 1)
注意=
而不是==
或===
,您分配一个"null"
到entity
的值,然后评估为一个真实值@987654327 @ 是短路的,所以因为第一个表达式的计算结果为真,length === 1
部分不会被计算,所以if
语句的真正分支将始终被执行。
【讨论】:
以上是关于if(array.length===1)条件不适用于长度> 1的数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章