簡體   English   中英

從數組 JavaScript 中刪除元素

[英]Remove element from array JavaScript

我正在做這個小游戲,您可以在其中聽到數組中的隨機單詞,然后單擊卡片(“container__item”)。 如果單詞與卡片匹配,則 card("container__item") 變得幾乎透明,並且游戲繼續進行,直到沒有更多單詞為止。 我有這段代碼,但如果它與卡匹配,我不知道如何從數組中刪除音頻。

        let gameContainer = document.querySelector('.game__container');
        let audios = document.querySelectorAll('.audio');
        let containerItem = document.querySelectorAll('.container__item')
        let randomAudio;

        function randomInteger(min, max) {
        let rand = min + Math.random() * (max + 1 - min);
         return Math.floor(rand);
          }

         gameContainer.addEventListener('click', playGame);
          function playGame() {
             const arr = Array.from(audios);
             randomAudio = arr[randomInteger(0, arr.length - 1)];
             randomAudio.play();

          containerItem.forEach((a)=>a.addEventListener('click',guessCard));
          function guessCard(){
          if(randomAudio == this.querySelector('.audio')){
           this.style.opacity = '0.3';
             }
          else{
            audioFail.play();
              }
            }
           }

正如評論中所指出的,您可以使用arr.splice(index, 1);從數組中刪除一個元素。 . 第二個參數說明您要刪除的數組元素的數量,在這種情況下只有一個。 那么,這對你有什么影響? 首先,將 randomAudio 的索引放入一個變量中。 接下來使用splicearr中刪除該索引 function playGame()將如下所示:

function playGame() {
    var arr = Array.from(audios);
    var index = randomInteger(0, arr.length - 1);      
    randomAudio = arr[index];
    randomAudio.play();

    containerItem.forEach((a)=>a.addEventListener('click',guessCard));

    function guessCard() {
        if(randomAudio == this.querySelector('.audio')) {
            this.style.opacity = '0.3';
            arr.splice(index,1);
        } else{
            audioFail.play();
        }
    }
}



您可以使用不同的方法和技術從 JavaScript arrays 中刪除元素:

  • array.pop() - 從數組的末尾刪除
  • array.shift() - 從數組的開頭刪除
  • array.splice(0, 2) - 從特定的數組索引中刪除(這里從索引 position 0 開始,刪除兩個元素)
  • array.filter(function(){...}) - 允許您以編程方式從數組中刪除元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM