js forEach使用push的问题

今天遇到一个需求,一个后端取回的数组,在添加一个字段的时候需要判断添加的这个字段是否和后端取回数组里面的字段相等,如果相等就不能添加,不相等才能添加。
example:

// 后端取回的数组
arr = [{name: '小红'},{name: '小明'}{name: '小绿'}{name: '小黄'}];
/*
 我需要循环这个数组然后判断
 this.newTopicType这个是我需要添加的字段
*/ 
arr.forEach(item => {
  if (item.name == this.newTopicType) {
    this.$toast('已有该字段');
  } else {
	arr.push({name: this.newTopicType})
  }
})
// 当你这样写的话就大错特错了,我开始想的就是这个逻辑,但是测试了一下不行,那么接下来写对的代码
let cc = false;  // 定义一个变量
arr.forEach(item => {
  if (item.name == this.newTopicType) {
    this.$toast('已有该字段');
    cc = true; // 变成true。方便后续操作,这儿手动变为true,不手动的话永远是false,因为你手动输入和后端取回来的字段一样的时候就会变为true。
    this.newTopicType = ''; // 清空该字段
  }
})
if (cc) return;  // 如果cc这个值变成true才会执行,上边循环已手动变为true,所以执行以下代码。
this.editComment.push({name: this.newTopicType})
this.newTopicType = '';

如果错误,请留言。谢谢

你可能感兴趣的:(vue,vant,javascript,vue.js,es6)