从Javascript对象中删除单个对象

这个问题在这里已经有了答案:

  • 如何从JavaScript中的数组中删除特定的元素? 62个答案
  • JavaScript的 - 条件5答案删除数组元素

  • 迭代是必须的。 您必须使用.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');
    

    在伊恩评论后编辑:

    我假设你的收藏有独特的物品。 如果没有,你必须遍历所有项目,你必须向后做,因为如果你从数组中删除一个元素,它的索引将会改变,迭代将无法正常工作。 所以这个函数是一个更安全的版本。

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

    你可以使用splice从数组中删除一个元素: MyCheckedCourses.splice(index,length);

    一个例子:

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

    MyCheckedCourses现在是: [0, 1, 3] MyCheckedCourses [0, 1, 3]

    要根据您可以使用的键值找到索引:

    // 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/3209.html

    上一篇: Remove a Single Object from a Javascript Object

    下一篇: Remove value from associative array