簡體   English   中英

循環遍歷整個數組,同時排除項目

[英]Loop through entire array while excluding an item

我有一系列的項目,我想遍歷並應用一些代碼,但不包括一個項目(單擊的項目)。 我試過使用拼接,但我不想刪除數組項,只需跳過它即可。 在這種情況下,我試圖為每個項目刪除一個CSS類,但排除的項目除外。

我已經嘗試了幾種方法,將剪接用於一種我不需要的方法。 我也嘗試過類似if(array [i] == 3 ||(i-1)= 2){繼續; 其他{....},但似乎無法正常工作。

   var array = ["item1", "item2", "item3"];
   var i;
   for (i = 0; i < items.length; i++) {
       if(array[i] is the excluded one){
               skip over}
    else { $(items[i]).removeClass('class');
    }

沒有錯誤消息,只是沒有按預期工作。

使用continue

在以下示例中,我們要排除“ item2” 和固定變量的命名/引用

 var items = ["item1", "item2", "item3"]; var i; for (i = 0; i < items.length; i++) { if(items[i] === "item2"){ continue; } //$(items[i]).removeClass('class'); document.write(items[i] + "<br>"); } 

數組項目是元素的ID? -如果需要,則代碼中需要id指示符(“ # ”)

$('#' + items[i]).removeClass('class')

編輯-我剛剛注意到您的數組稱為“數組”,但是在else塊中,您將其稱為項目

   var items= ["item1", "item2", "item3"];
   var i;
   for (i = 0; i < items.length; i++) {
       if(items[i] is the excluded one){
               skip over}
    else { $('#' + items[i]).removeClass('class');
    }

我仍然認為有更好的方法可以這樣做-但請嘗試使名稱相同,然后看看是否可行。

我認為您需要這樣的東西:

<script type="text/javascript">
    $(document).ready(function(){
        $(".click").click(function(){ //When item with class click is clicked
               var items = ["item1", "item2", "item3"];
               var i;
               var itemid = this.id;
               for (i = 0; i < items.length; i++) { //go through array
                    if(items[i]==itemid){ //check if array item is the same as id of the class click
                        // Don't do anything, this is the one you clicked
                    }else{
                        $("#"+items[i]).removeClass('removeme'); // Remove class of all other with class click
                    }
               }
        });
    });
</script>
<div class="item1 click removeme" id="item1">Test1</div>
<div class="item2 click removeme" id="item2">Test2</div>
<div class="item3 click removeme" id="item3">Test3</div>

函數式編程的優雅方式:

const array = ["item1", "item2", "item3"];

// item to ignore
const ignore = "item2";

// use filter to keep only items which are not ignored
const newarray = array.filter((e)=> { return e !== ignore } );

// iterate over remaining
newarray.forEach((e)=> { $(e).removeClass("class"); });

暫無
暫無

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

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