循环遍历整个数组,同时排除项目

时间:2019-05-28 20:34:59

标签: javascript arrays for-loop

我想遍历一系列项目并对其应用一些代码,但不包括一项(单击的项目)。我试过使用拼接,但我不想删除数组项,只需跳过它即可。在这种情况下,我试图为每个项目删除一个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');
    }

没有错误消息,只是无法正常工作。

4 个答案:

答案 0 :(得分:1)

使用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>");
}

答案 1 :(得分:0)

数组项是元素的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');
    }

我仍然认为还有更好的方法-但是尝试使名称相同,看看是否可行。

答案 2 :(得分:0)

我认为您需要这样的东西

<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>

答案 3 :(得分:0)

函数式编程中的经典方式:

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"); });