Итерация является обязательным. Вы должны использовать .splice()
для удаления соответствующего элемента и break
цикл for.
var i, id = '123', date = '6/7/2010';
for(var i = 0, il = MyCheckedCourses.length;i<il;i++) {
if(MyCheckedCourses[i].courseID == id && MyCheckedCourses[i].endDate == date) {
MyCheckedCourses.splice(i, 1);
break;
}
}
Вы можете сделать функцию и использовать ее с такими параметрами;
function remove(id, date) {
for(var i = 0, il = MyCheckedCourses.length;i<il;i++) {
if(MyCheckedCourses[i].courseID == id && MyCheckedCourses[i].endDate == date) {
MyCheckedCourses.splice(i, 1);
break;
}
}
}
// Example usage:
remove('123', '6/7/2010');
Edit после Яна comment:
Я предполагаю, что ваша коллекция есть уникальные предметы. Если нет, вам нужно перебирать все элементы, и вам нужно сделать это заново, потому что если вы удалите элемент из массива, индекс будет меняться, и итерация будет работать неправильно. Таким образом, эта функция является гораздо более безопасной версией;
function remove(id, date) {
for(var i = MyCheckedCourses.length - 1;i >= 0;i--) {
if(MyCheckedCourses[i].courseID == id && MyCheckedCourses[i].endDate == date) {
MyCheckedCourses.splice(i, 1);
}
}
}
// Example usage:
remove('123', '6/7/2010');
Это не объект, это «массив» объектов. – mavili
'window.MyCheckedCourses' - это массив, а не объект jQuery. –
Где находится jQuery? –