Remove a Single Object from a Javascript Object

This question already has an answer here:

  • How do I remove a particular element from an array in JavaScript? 62 answers
  • javascript - remove array element on condition 5 answers

  • Iteration is a must. You have to use .splice() to remove corresponding item and break the for loop.

    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;
        }
    }
    

    You can make a function and use it with parameters like this;

    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 after Ian's comment:

    I assume that your collection have unique items. If not you have to iterate through all items and you have to do it backwards because if you remove an element from array it's index will change and iteration will not work correctly. So this function is a much more safer version;

    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');
    

    You can delete an element from an array using splice: MyCheckedCourses.splice(index,length);

    An example:

    MyCheckedCourses=[0,1,2,3];
    MyCheckedCourses.splice(1,1);
    

    MyCheckedCourses is now: [0, 1, 3]

    To find the index based on key values you can use:

    // only returns the first found index
    function findBy(arr,keys){
      var i = 0,match,len;
      for(i=0,len=arr.length;i<len;i++){
         match=true;
         for(key in keys){
           if(arr[i][key]!==keys[key]){
             match=false;
             break
           }
         }
         if(match===true){
           return i;
         }
      }
      return false;
    }
    var courses=[
        { courseID: '123', endDate: '6/7/2010' },
        { courseID: '123', endDate: '3/9/2003' },
        { courseID: '456', endDate: '3/9/2003' }  
      ];
    var index = findBy(courses,
      {courseID:"123",
       endDate:"3/9/2003"}
    );
    if(index!==false){
      courses.splice(index,1);
    }
    console.log(courses);
    
    链接地址: http://www.djcxy.com/p/3210.html

    上一篇: 如何删除数组的匹配元素

    下一篇: 从Javascript对象中删除单个对象