Pousser des objects JQuery uniques vers un tableau

J’utilise Jquery pour la première fois et j’essaie de placer des objects uniques dans un tableau. Si l’object est déjà dans le tableau, il les supprime. Ceci permet aux étudiants de réserver plusieurs cours avec un tutoriel en cliquant sur les options disponibles, puis en soumettant le tableau complet avec toutes les options sélectionnées.

J’ai mis à jour mon code exactement à partir de ce que j’ai écrit. Ce code fonctionne parfaitement si je n’utilise que des éléments simples dans le tableau. Il ne peut pas évaluer les emplacements sélectionnés en double si j’utilise des objects dans le tableau.

var bookingSlots = []; $('.row').on('click','.slots', function (e) { e.preventDefault(); $(this).toggleClass('selected'); var slotID = $(this).attr('data-slot-id'); var studentID = $(this).attr('data-student-id'); var slot = {slotID: slotID, studentID: studentID}; var found = jQuery.inArray(slot,bookingSlots); if(found < 0){ bookingSlots.push(slot); }else{ bookingSlots.splice(found, 1); } }); 

De votre commentaire:

l’object est créé à chaque clic

C’est le problème: les objects équivalents ne sont ni l’un ni l’autre, et inArray utilise === pour trouver l’object. Par exemple, $.inArray({id:1}, [{id:1}]) renvoie -1 :

 console.log($.inArray({id:1}, [{id:1}])); // -1 
  

Dans votre cas, je vous suggère de regarder LINQ JS

Exemple:

 var exObjArr = Enumerable.From(array) .Where(function(x){return x.id1 == object.id1 && x.id2 == object.id2}) .ToArray(); if(exObjArr.length == 0){ //object does not exist } else{ //object exists }