【发布时间】:2026-01-10 23:45:01
【问题描述】:
我正在开发一款纸牌游戏。它有一个playerHand 数组,由7 个卡片对象组成,属性为Valuesuit 和cardName。这些在屏幕上呈现为 7 个 div,共享类 .card 和与相应 cardName 匹配的唯一类,例如.six_hearts.ace_spades
当卡片 div 被点击时,它会接收到 .selected 类。然后将 Div 的 classList 推入一个名为 SelectedCardsImg 的数组中。
我要做的是从playerHand数组中删除相应的卡片对象,并将其推入一个名为selectedCards的新数组中。
let selectedCardsImg = [];
let selectedCards = [];
//loop through array of card images
for (var i = 0; i < selectedCardsImg.length; i++) {
//loop through playerHand array (card objects)
for (var x = 0; x < playerHand.length; x++) {
//if the current card image classlist contains the current card objects name
if (selectedCardsImg[i].contains(playerHand[x].cardName)) {
//push it into the new array selectedCards
selectedCards.push(playerHand[x]);
//remove it from the playerHand array
playerHand.shift(playerHand[x]);
}
}
}
好的,所以我找到了一个解决方案,我没有尝试在一个循环中完成所有操作,而是编写了两个循环。将卡片推入selectedCards 数组:
for (var i = 0; i < playerHand.length; i++) {
let currentCard = playerHand[i];
let currentCardName = playerHand[i].cardName;
for (var x = 0; x < selectedCardsImg.length; x++) {
let result = selectedCardsImg[x].contains(currentCardName);
if (result) {
selectedCards.push(currentCard);
}
}
}
然后第二个循环将selectedCards 数组与playerHand 数组进行比较,并从playerHand 中删除匹配项:
for (var i = 0; i < selectedCards.length; i++) {
console.log(selectedCards[i]);
for (var x = 0; x < playerHand.length; x++) {
if (selectedCards[i] === playerHand[x]) {
playerHand.splice(x, 1);
console.log(playerHand);
console.log(selectedCards)
}
}
}
【问题讨论】:
-
selectedCardsImg 包含什么?字符串?
-
ImgArr应该是selectedCardsImg并返回 3 个类的 DOMTokenList
标签: javascript loops object if-statement properties