Javascript JS:如何在数组中使用一个元素,然后去掉它

Javascript JS:如何在数组中使用一个元素,然后去掉它,javascript,arrays,Javascript,Arrays,我正在尝试制作一个匹配的纸牌游戏,并尝试“洗牌”。下面是我现在如何设置一切的: 卡的数据是对象 var idea = { id: 1, english: 'idea', pinyin: 'zhǔyì', hanyu: '主意' } 这副牌是一个包含所有牌的阵列 var vocabArray = [idea, getOn, need, getOff, beautiful, scenery, sameAlike, because, help, play]; 这就是

我正在尝试制作一个匹配的纸牌游戏,并尝试“洗牌”。下面是我现在如何设置一切的:

卡的数据是对象

var idea = {
    id: 1,
    english: 'idea',
    pinyin: 'zhǔyì',
    hanyu: '主意'
}
这副牌是一个包含所有牌的阵列

var vocabArray = [idea, getOn, need, getOff, beautiful, scenery, sameAlike, because, help, play];
这就是卡片是如何进入我的HTML的

var cardIndexNum = Math.floor(Math.random() * 10);
var cardReturn = vocabArray[cardIndexNum];
document.getElementById('card1').innerHTML = '<h2>' + cardReturn.hanyu + '<br>' + cardReturn.pinyin + '</h2>';
HTML

现在我看到一些卡片不止一次出现,因为在我使用卡片之后,它仍然在阵列中。我尝试在卡使用后在卡上使用.splice,但有时会得到一个属性未定义的数组元素。

因为它是一个对象数组,所以不能直接在数组上使用splice来删除该元素

本例使用jQuery

您需要将vocabArray、id和值作为函数参数传递

findAndRemove(vocabArray, "id", 1);
编辑

支持普通javascript

未经测试


删除。根据需要洗牌、弹出或将其移出数组。您应该执行var cardIndexNum=Math.floorMath.random*vocabArray;,因此,在从vocabArray拼接使用过的卡之后,您将从可用的卡中进行选择。我尝试使用纯Javascript编写此代码。我能做以下几件事吗?1从数组中选择元素。2使用元素后,将其位置更改为数组的最后一个元素。3从我的随机数发生器中减去一。如果是这样,我只需要知道如何执行步骤2。@Josh编辑只支持id,请确保为函数指定合适的名称。我不认为$。每个人都喜欢在迭代过程中拼接项目…@Chandresh。谢谢你的帮助。我是JS的新手,不明白你的答案是怎么回事。这就是我所做的,最终成功了。1.给每个对象一个名为used的属性,并将其设置为false。2.使用卡后,“used”属性设置为true。3.创建了一个If语句,该语句只允许我从牌组中拾取未使用的牌。如果card.used==true,它将重新拾取。放置所有卡后,函数将所有属性重置回false,否则再次按下按钮将启动无限循环。再次感谢!
var findAndRemove = function(array,  property, value) {
    $.each(array, function(index, result) {
          if(result[property] == value) {
              array.splice(index, 1);
          }
    }
}
findAndRemove(vocabArray, "id", 1);
var findAndRemove = function(array, value) {
    for(var i=0; i < array.length; i++) {
          if(array[i].id == value) {
              array.splice(i, 1);
          }
    }
}
findAndRemove(vocabArray, 1);