如何从数组中排除特定的id?

时间:2015-03-16 20:43:57

标签: javascript arrays underscore.js lodash

我有一个带有体育名称的数组,可以选中并取消选中它们。

checked = false的项目正在保存在数据库中。默认情况下,所有项目都在checked = true,但是,我想要排除数组中的一个项目,而是将其放到checked = false

首先,数组看起来像这样

[
  {
    "id": 26,
    "name": "LIVE Betting",
    "priority": 0
  },
  {
    "id": 8,
    "name": "NBA",
    "priority": 1
  },
  {
    "id": 24,
    "name": "College Basketball",
    "priority": 2
  },
  {
    "id": 42,
    "name": "Women College Basketball",
    "priority": 3
  },
  {
    "id": 9,
    "name": "NHL",
    "priority": 4
  },
  {
    "id": 6,
    "name": "MLB",
    "priority": 5
  }
 ]

这是在这里工作的功能

_this.getSportChecked(customer).then(function(sportChecked) {
    var sportIds = _.pluck(sports, 'id'),
        intersectedSports = _.intersection(sportIds, sportChecked.sport);
    if (sports.length) {
        //HERE I NEED TO EXCLUDE THE ID 9
        sports = _.map(sports, function(sport) {
          sport.checked = !_.includes(intersectedSports, sport.id);
          return sport;
     });
    }
 });

返回此对象

{
  "id": 26,
  "name": "LIVE Betting",
  "priority": 0,
  "checked": true
}
{
  "id": 8,
  "name": "NBA",
  "priority": 1,
  "checked": true
}
{
  "id": 24,
  "name": "College Basketball",
  "priority": 2,
  "checked": true
}
{
  "id": 42,
  "name": "Women College Basketball",
  "priority": 3,
  "checked": true
}
{
  "id": 9,
  "name": "NHL",
  "priority": 4,
  "checked": true
}
{
  "id": 6,
  "name": "MLB",
  "priority": 5,
  "checked": true
}

所以默认情况下你可以看到所有这些项都是checked = true,但是我想默认设置id = 9checked = false,直到用户将其切换为true,以防万一他想要。

你有什么建议吗?请阅读我的代码中的注释,我需要将其排除在外。

1 个答案:

答案 0 :(得分:1)

嗯,你可以通过id找到这项运动并手动取消选中它。

if (sports.length) {
    //HERE I NEED TO EXCLUDE THE ID 9
    sports = _.map(sports, function(sport) {
      sport.checked = !_.includes(intersectedSports, sport.id);
      // Special case for id 9
      if (sport.id === 9) {
        sport.checked = false;
      }
      return sport;
 }