比较两个数组并追加到新数组

时间:2018-08-17 21:05:27

标签: javascript arrays

我有两组卡片array(a)和array(b) 将array(a)看作是主控台,而将array(b)当作玩家卡。

我正在遍历array(a),然后检查array(b)中是否存在。如果没有,那么我从array(a)中删除了。 html绑定到array(1)中剩下的内容,下面的代码可以正常工作。

但是现在我意识到array(b)可能有重复的示例[cardID:1,cardID:2,cardID:3,cardID:3,cardID:4]

所以我添加了第三个数组,因为我也想保留重复的数组,所以我推到了最后一个数组。但是此代码不会获取重复的cardID3,不确定如何执行此操作吗?

var i = 0;
var entry1;
    while (i < this.myCardsArray.length) {
       entry1 = this.myCardsArray[i];
          if (this.cardsArray.some(function(entry2) { return entry1.id === entry2.cardID; })) {
              // Found, progress to next
              this.finalCardsArray.push(this.myCardsArray[i]) //added this line to save results
               ++i;
          } else {
              // Not found, remove
              this.myCardsArray.splice(i, 1);
          }
      }

1 个答案:

答案 0 :(得分:0)

var master_A = [
  {
    cardID: 1,
    extra: 'stuff'
  },
  {
    cardID: 2,
    extra: 'stuff'
  },
  {
    cardID: 3,
    extra: 'stuff'
  },
  {
    cardID: 4,
    extra: 'stuff'
  }
]

鉴于主机集在id-s上具有唯一性->我将创建一个新对象,将该对象映射到其id-s

var master_map_A = {};
master_A.forEach(function(card) {
  master_map_A[card.cardID] = card
})

然后通过遍历列表并引用为master_map_A [card.cardID] ...

,从slave_B集中引用它们,以获取所需的其他信息。
var slave_B = [
  {
    cardID: 1
  },
  {
    cardID: 2
  },
  {
    cardID: 3
  },
  {
    cardID: 3
  },
  {
    cardID: 4
  }
]