有没有办法用&&侦测null值?

最近在做一个Iterator

有写到一个地方
while (this.hasNext() && this.datas[this.index]!=null && this.datas[this.index].isSick || this.datas[this.index].isDropout)
this.index++;

如果该学生有生病或是请假就必须跳过不计算,但如果到最后一个index时,datas[this.index]一定是null,所以判定this.datas[this.index].isSick时一定会报错
高手们遇到这种状况都会怎么解啊?

这种用for可以吗
for (let index = 0; index < this.datas.length; index++) {
let element = this.datas[index];
if (element && element.isSick || elemnt.isDropout) {}
}

不行,我想问的重点是 如果同时要判定null,就跳过,同时不是null的话里面也有参数(isSick)会让while跳过,

这种状况在读取data升级的时候很常出现,每次都要在侦测时写成

if(this.datas[this.index]!=null)
if(ths.datas[this.indes].isSick || elemnt.isDropout){ cc.log(“跳过”)}

侦测一多就很麻烦,code非常脏

是打印的0和1没啥问题呀

image
至少这样写吧 用let记录data,在大公司出毛病可是很麻烦的

我只是测试举个例子…重点是判空,不是怎么样写。标题不是说无法判空吗。

this.datas[this.index]?.isSick
加个问号就可以了你试试

1赞

while (this.hasNext() && this.datas[this.index]!=null && (this.datas[this.index].isSick || this.datas[this.index].isDropout))

感谢 这个是正解

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。