如何根据以下javascript对象中的courseID和endDate删除一个项目?
window.MyCheckedCourses = [
{ courseID: '123', endDate: '6/7/2010' },
{ courseID: '123', endDate: '3/9/2003' },
{ courseID: '456', endDate: '3/9/2003' }
];
Run Code Online (Sandbox Code Playgroud)
Emr*_*kan 17
迭代是必须的.您必须使用.splice()删除相应的项目和breakfor循环.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以创建一个函数并使用这样的参数;
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');
Run Code Online (Sandbox Code Playgroud)
在伊恩的评论后编辑:
我假设你的收藏品有独特的物品.如果不是,你必须遍历所有项目而你必须向后执行它,因为如果你从数组中删除一个元素,它的索引将会改变,迭代将无法正常工作.所以这个功能是一个更安全的版本;
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');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |