Цикл по всему массиву, исключая элемент - PullRequest
0 голосов
/ 28 мая 2019

У меня есть массив элементов, которые я хотел бы просмотреть и применить некоторый код, исключая один элемент (нажатый элемент).Я пробовал использовать сплайс, но я не хочу удалять элемент массива, просто пропустите его.В этом случае я пытаюсь удалить класс CSS для каждого элемента, кроме исключенного.

Я пробовал несколько методов, используя сплайс для одного, который мне не нужен.Я также пробовал что-то вроде if (array [i] == 3 || (i - 1) = 2) {continue;еще {....} но не могу заставить это работать.

   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 ]

1 голос
/ 28 мая 2019

Использование 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>");
}
0 голосов
/ 29 мая 2019

Элегантный способ в функциональном программировании:

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"); });
0 голосов
/ 28 мая 2019

Я думаю, что-то вроде того, что вам нужно:

<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>
0 голосов
/ 28 мая 2019

являются ли элементы массива идентификаторами элементов? - если это так, вам нужен индикатор 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');
    }

Я все еще думаю, что есть лучший способ сделать это - но попробуйте сделать имена одинаковыми и посмотрите, сработает ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...