正文 |
写这篇博客时我特别赞同一句话——这世间无奇不有,没有见不到的只有想不到的。
这两天在利用集合获取我想要的数据时,因为一个等号让接收到的数据集合发生了意想不到的变化,虽然我找到了界面出错的原因是数据不对,也知道哪块错了,但是我开始的关注点却放错了位,太过好奇却没有试的再多一点想的再全面一点,怎么也没想到一切都是因为一个“=”引起的。
下面小菜就先简单展示一下奇异的数据变化和变化的起因。
◆奇异的数据变化 |
这些也是我在做排课时遇到的问题,当我点击表格进行排课前要先判断一下选择的教室的容量够不够
1.代码
//表格的点击事件:点击表格排课之前先判断容量是否足够大
td_click(id: any) {
//在console中输出roomOptions集合
console.log("-------------------------测试roomOptions-----------------");
console.log(this.roomOptions);
//从教室集合roomOptions找到下拉框选择的这个教室对应的一整条数据
let roomdata = this.roomOptions.find(x => x.id = this.roomId);
//在console中输出找到的那条数据
console.log("-------------------------测试roomdata-----------------");
console.log(roomdata);
//用获取到的这条数据中的容量与现在需要的容量进行比较
if (roomdata.roomCapacity < this.arrangecourse.teachclassEntity.capacity) {
this.showDialog("教室容量不足,建议选择其他教室");
return;
}
}
2.选择教室下来框中的第一个教室
◇点击表格时获取到的数据集合(一切正常)
◇根据第一个教室的id(FrVnuqiYCYb6gayrK51C7d)find到的数据(一切正常)
3.选择下拉框中第二个教室
◇再次点击表格时获取到的数据集合(异常:l两条数据的id变成了第二个教室的id(Ud7vPUjSsnAsQkE2mUEXd7)但两条数据的其他字段都没变)
◇根据第二个教室的id(Ud7vPUjSsnAsQkE2mUEXd7)find到的数据(异常:找到的是第一个教室对应的数据))
◆数据变化的原因 |
我使用集合的find时用错了等号,我需要的是比较(==)可我却用的是赋值(=)
//表格的点击事件:点击表格排课之前先判断容量是否足够大
td_click(id: any) {
//在console中输出roomOptions集合
console.log("-------------------------测试roomOptions-----------------");
console.log(this.roomOptions);
//从教室集合roomOptions找到下拉框选择的这个教室对应的一整条数据
let roomdata = this.roomOptions.find(x => x.id == this.roomId);
//在console中输出找到的那条数据
console.log("-------------------------测试roomdata-----------------");
console.log(roomdata);
//用获取到的这条数据中的容量与现在需要的容量进行比较
if (roomdata.roomCapacity < this.arrangecourse.teachclassEntity.capacity) {
this.showDialog("教室容量不足,建议选择其他教室");
return;
}
}
◆JavaScript中的等号 |
◇一个等号(=)
表示:赋值
◇两个个等号(==)
表示:equality 等同的意思,使用“==”,如果两边值的类型不同的时候,是要先先进行类型转换后,才能做比较。
◇三个等号(===)
表示:identity 恒等的意思,使用”===”时,是不需要做类型转换的,如果两边值的类型不同,就表示一定是不等的。
◇辅助理解的链接分享
JavaScript里面三个等号和两个等号的区别
JavaScript NaN 属性
小结 |
嘿嘿,刚开始对小菜来说奇异的变化现在已经说完了,所以以后要多注意细节哦,出现问题一定要静下心来找到出现问题的原因,然后考虑问题要全面一些!