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

remove specific id from array of checked items

我有一个 list/array 的运动,默认情况下所有运动都带有 checked = true,在下面的函数中你可以看到这一行 intersectedSports = _.intersection(sportIds, sportChecked.sport); 其中 sportIds 是运动 ID 的完整列表和 sportChecked.sport 是带有 checked = false 的运动,这是用户未选中的运动。

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

这是一个包含 30 个项目的数组,每个项目都有一个唯一的 id,正如我提到的所有运动项目都是 checked = true,但我需要 id: 10 是 [=默认为 15=]。

在你看到的所有这些代码的背后,已经有一个结构将用户 checked = false 的项目保存在数据库中,这就是你在这里看到这一行的原因 sport.checked = !_.includes(intersectedSports, sport.id);.

所以,为了做我想做的事,我的猜测:我需要把 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

你可以把逻辑简化成这样:

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