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 === 1entity === "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的数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

错题3 判断能力分析

冒泡排序

合并排序函数

剑指Offer(Java)-1-二维数组中的查找

冒泡排序

JavaScript 插入排序法