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

Javascript 从选中项的数组中删除特定id,javascript,arrays,underscore.js,lodash,Javascript,Arrays,Underscore.js,Lodash,我有一个运动的列表/数组,默认情况下,所有运动都带有checked=true,在下面的函数中,您可以看到这一行intersectedSports=.\uuuux.intersection(sportid,sportChecked.sport)其中sportIds是运动ID的完整列表,而sportChecked.sport是用户未选中的运动checked=false 请记住:默认情况下,所有运动项目均checked=true 这是一个由30个项目组成的数组,每个项目都有一个唯一的id,正如我提到的

我有一个运动的列表/数组,默认情况下,所有运动都带有
checked=true
,在下面的函数中,您可以看到这一行
intersectedSports=.\uuuux.intersection(sportid,sportChecked.sport)其中
sportIds
是运动ID的完整列表,而
sportChecked.sport
是用户未选中的运动
checked=false

请记住:默认情况下,所有运动项目均
checked=true

这是一个由30个项目组成的数组,每个项目都有一个唯一的
id
,正如我提到的,所有的运动项目都是
checked=true
,但是我需要
id:10
在默认情况下是
checked=false

在您看到的所有这些代码背后,已经有一个结构可以将用户选中的项目保存在DB中
checked=false
,这就是为什么您在这里看到这一行
sport.checked=!\。包括(intersectedSports,sport.id)

所以,为了做我想做的事情,我猜:我需要把
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您可以将逻辑简化为以下内容:

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

假设id为10的运动始终在运动数组中,
.findWhere(sports,{id:10}).checked=false
@mathewbergt我应该把它放在哪里?我已经这样做了,但是没有工作,
id:10
仍然是
checked=true
而不知道你的代码是什么样子,我帮不了你多少忙。这是一个非常基本的示例,我在其中设置了一个运动数组,并调用u.findWhere函数将id为10的运动设置为checked=false。@mathewbergt将其作为答案发布,以便我可以为您提供最佳答案检查。