Lặp lại là điều bắt buộc. Bạn phải sử dụng .splice()
để xóa mục tương ứng và break
vòng lặp 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;
}
}
Bạn có thể tạo hàm và sử dụng nó với các tham số như thế này;
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');
Chỉnh sửa sau khi Ian của comment:
tôi cho rằng bộ sưu tập của bạn có các mục độc đáo. Nếu bạn không phải lặp qua tất cả các mục và bạn phải làm ngược lại vì nếu bạn loại bỏ một phần tử khỏi mảng thì chỉ mục của nó sẽ thay đổi và lặp lại sẽ không hoạt động chính xác. Vì vậy, chức năng này là một phiên bản an toàn hơn nhiều;
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');
Nguồn
2013-08-16 14:15:21
không phải là đối tượng, đó là một "mảng" của các đối tượng. – mavili
'window.MyCheckedCourses' là một mảng chứ không phải đối tượng jQuery. –
jQuery ở đâu? –