【问题标题】:remove specific id from array of checked items从检查项目数组中删除特定 id
【发布时间】:2015-03-17 00:24:39
【问题描述】:

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

记住:所有运动默认为checked = true

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

在你看到的所有这些代码的背后,已经有一个结构可以将用户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

【问题讨论】:

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

标签: javascript arrays underscore.js lodash


【解决方案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);
     });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2016-12-19
    • 2012-02-21
    • 2016-07-30
    • 2021-04-20
    • 2022-06-10
    相关资源
    最近更新 更多