将唯一的JQuery对象推送到数组
我完全不习惯使用Jquery,我正在尝试将唯一对象推送到数组,如果对象已经在数组中,则会删除它们。 这是为了让学生通过单击可用选项预订多个教程类,然后提交包含所有选定选项的完整数组。
我完全根据我写的内容更新了我的代码。 如果我只使用数组中的单个元素,此代码可以正常工作。 如果我在数组中使用对象,则无法评估重复的选定插槽。
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); } });
从你的评论:
每次单击都会创建对象
这就是问题:等价对象彼此不是==
或===
,并且inArray
使用===
来查找对象。 例如, $.inArray({id:1}, [{id:1}])
返回-1
:
console.log($.inArray({id:1}, [{id:1}])); // -1
在你的情况下,我建议你看看LINQ JS
例:
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 }