代码之家  ›  专栏  ›  技术社区  ›  Non

从选中项数组中删除特定id

  •  2
  • Non  · 技术社区  · 9 年前

    我有一个运动列表/阵列,默认情况下所有这些运动都与 checked = true ,在下面的函数中,您可以看到这一行 intersectedSports = _.intersection(sportIds, sportChecked.sport); 哪里 sportIds 是运动ID和 sportChecked.sport 运动会有 checked = false 这是用户未检查的运动。

    记住:所有的运动都是 已检查=真 默认情况下。

    这是一个由30个项目组成的数组,每个项目都有一个唯一的 id ,正如我提到的所有运动 已检查=真 但我需要 id: 10 成为 检查=错误 默认情况下。

    在您看到的所有这些代码背后,已经有一个构造可以将用户的项目保存在数据库中 检查=错误 这就是为什么你看到这条线 sport.checked = !_.includes(intersectedSports, sport.id); .

    所以,为了做我想做的事,我的客人:我需要 编号:10 具有 checked=false var = intersectedSports 我上面提到过,除非你对我有更好的建议……那么,你向我的朋友推荐什么?

      var sportIds = _.pluck(sports, 'id'),
          intersectedSports = _.intersection(sportIds, sportChecked.sport);
      if (sports.length) {
        sports = _.map(sports, function(sport) {
          sport.checked = !_.includes(intersectedSports, sport.id);
          return sport;
        });
      }
    

    以防万一:我正在使用Lodash和Angular

    1 回复  |  直到 9 年前
        1
  •  1
  •   Gruff Bunny    9 年前

    您可以将逻辑简化为以下内容:

         // build a list of the sports that should be unchecked
         var unchecked = sportChecked.sport.concat(10);
    
         // add a checked property to each sport
         _.each(sports, function(sport){
            sport.checked = !_.contains(unchecked, sport.id);
         });