JQuery: проверка значения в массиве, если это так, удалите, если нет, добавьте

Я пытаюсь проверить, есть ли значение в массиве. Если значение не существует в массиве, оно должно быть добавлено в массив, если значение уже существует, оно должно быть удалено.

var selectArr = [];
$('.media-search').mouseenter(function(){
    var $this = $(this);
    $this.toggleClass('highlight');
}).mouseleave(function(){
    var $this = $(this);
    $this.toggleClass('highlight');

}).on('click',function(){
    var dataid = $(this).data('id');

    if(selectArry){ // need to somehow check if value (dataid) exists.
    selectArr.push(dataid); // adds the data into the array
    }else{
    // somehow remove the dataid value if exists in array already
    }


}); 

Ответ 1

Используйте метод inArray для поиска значения и методы push и splice для добавления или удаления элементов:

var idx = $.inArray(dataid, selectArr);
if (idx == -1) {
  selectArr.push(dataid);
} else {
  selectArr.splice(idx, 1);
}

Ответ 2

Простая программа JavaScript для поиска и добавления/удаления значения в массиве

var myArray = ["cat","dog","mouse","rat","mouse","lion"]
var count = 0; // To keep a count of how many times the value is removed 
for(var i=0; i<myArray.length;i++) {
    //Here we are going to remove 'mouse'
    if(myArray[i] == "mouse") {
        myArray .splice(i,1);
        count = count + 1;
    }
}
//Count will be zero if no value is removed in the array
if(count == 0) {
    myArray .push("mouse"); //Add the value at last - use 'unshife' to add at beginning 
}

//Output
for(var i=0; i<myArray.length;i++) {
    console.log(myArray [i]); //Press F12 and click console in chrome to see output
}