为了账号安全,请及时绑定邮箱和手机立即绑定

vue 将2个数组里面得值对应起来

vue 将2个数组里面得值对应起来

心有法竹 2018-08-02 13:05:51
如果两个数组的id相等我就要使第一个数组里面的activeName字段改为true,我是以这个来判断他是否加入收藏,为true就是加入为false就是没有加入。后台并没有返回给我这样一个状态的字段是我自己加的。所以需要收藏的列表数组要与我i当前的俩对比id如果id相等就说明莫一条记录是收藏状态就是改写为true. 这两个数组怎么判断major_id等于id的时候就使activeName字段为true:    _this.listWish.forEach(function(a) {      _this.major.forEach(function(item) {        if (item.major_id == a.id) {          _this.$set(a, 'activeName', true);          _this.$set(a, 'wishId', item.wish_id);        } else {          _this.$set(a, 'activeName', false);        }      });    });    _this.listWish.forEach(function(a) {      _this.major.forEach(function(item) {        if (item.major_id == a.id) {          _this.$set(a, 'activeName', true);          _this.$set(a, 'wishId', item.wish_id);        } else {          _this.$set(a, 'activeName', false);        }      });    });    });## 但是我这样循环后activeName这个字段的值没有被改写对,全部都是false。
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞


你这样循环不对啊,按照你的意思

判断major_id等于id的时候就使activeName字段为true

你这样循环如果倒数第二个数是匹配,设成true了,倒数第一个不匹配,那不就又是false了吗?
你可以改成for循环

for(let i = 0; i < _this.listWish.length; i ++){

    for(let j = 0; i < _this.major.length; j ++){

        if (item.major_id == a.id) {

            _this.$set(a, 'activeName', true);

            _this.$set(a, 'wishId', item.wish_id);

            break;

        } else {

            _this.$set(a, 'activeName', false);

        }

    }

}


查看完整回答
1 反对 回复 2018-08-06
?
GCT1015

TA贡献1827条经验 获得超4个赞

//你的应该这样写。保证只有一次修改,循环的时候只是为了判断有没有

var _tag = false;

_this.listWish.forEach(function(a) {

  _tag = false;

  _this.major.forEach(function(item) {

    if (item.major_id == a.id) {

      _tag  = item.wish_id

    }

  });

  if(_tag){

      _this.$set(a, 'activeName', true);

      _this.$set(a, 'wishId', _tag);

  } else {

      _this.$set(a, 'activeName', false);

  }

});

//里面可以优化的地方就是如果内循环重复了,跳出来,这样可以少判断一点。

//你的应该这样写。保证只有一次修改,循环的时候只是为了判断有没有

var _tag = false;

_this.listWish.forEach(function(a) {

  _tag = false;

  _this.major.forEach(function(item) {

    if (item.major_id == a.id) {

      _tag  = item.wish_id

    }

  });

  if(_tag){

      _this.$set(a, 'activeName', true);

      _this.$set(a, 'wishId', _tag);

  } else {

      _this.$set(a, 'activeName', false);

  }

});

//里面可以优化的地方就是如果内循环重复了,跳出来,这样可以少判断一点。


查看完整回答
反对 回复 2018-08-06
  • 2 回答
  • 0 关注
  • 2819 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信