从已检查项目数组中删除特定ID

时间:2015-03-17 00:24:39

标签: javascript arrays underscore.js lodash

我有一个体育列表/数组,默认情况下所有体育都在checked = true,在下面的函数中,您可以看到此行intersectedSports = _.intersection(sportIds, sportChecked.sport);,其中sportIds是完整列表sports id和sportChecked.sportchecked = false的运动,这是用户取消选中的运动。

请记住:默认情况下,所有运动都是checked = true

这是一个包含30个项目的数组,每个项目都有一个唯一的id,正如我提到的所有体育项目都是checked = true,但我需要id: 10checked = false默认情况下。

在您看到的所有这些代码的后面,已经有一个构造可以在数据库中保存用户checked = false的项目,这就是您在此处看到此行sport.checked = !_.includes(intersectedSports, sport.id);的原因。

所以,为了做我想做的事,MY GUESS:我需要将id: 10checked=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 个答案:

答案 0 :(得分:1)

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

     // 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);
     });