加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular——一个等号引发的坑

发布时间:2020-12-17 08:11:03 所属栏目:安全 来源:网络整理
导读:正文 ?? 写这篇博客时我特别赞同一句话——这世间无奇不有,没有见不到的只有想不到的。 ?? 这两天在利用集合获取我想要的数据时,因为一个等号让接收到的数据集合发生了意想不到的变化,虽然我找到了界面出错的原因是数据不对,也知道哪块错了,但是我开始

正文

??写这篇博客时我特别赞同一句话——这世间无奇不有,没有见不到的只有想不到的。
??这两天在利用集合获取我想要的数据时,因为一个等号让接收到的数据集合发生了意想不到的变化,虽然我找到了界面出错的原因是数据不对,也知道哪块错了,但是我开始的关注点却放错了位,太过好奇却没有试的再多一点想的再全面一点,怎么也没想到一切都是因为一个“=”引起的。
??下面小菜就先简单展示一下奇异的数据变化和变化的起因。



◆奇异的数据变化

??这些也是我在做排课时遇到的问题,当我点击表格进行排课前要先判断一下选择的教室的容量够不够
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 属性

小结

??嘿嘿,刚开始对小菜来说奇异的变化现在已经说完了,所以以后要多注意细节哦,出现问题一定要静下心来找到出现问题的原因,然后考虑问题要全面一些!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读