在javascript数组中有几个对象元素,怎么删除指定值的对象,并返回剩余对象组成的数组?详情如下(有点难度哦)

在javascript数组中有几个对象元素,如何删除指定值的对象,并返回剩余对象组成的数组?详情如下(有点难度哦):
//先定义3个对象
var america={
  name:'美国',
  city: '华盛顿市',
  detail: {
    total: {
      population: "65万",
       area: {
        number: "177平方公里"
      }
    }
  },
  goodPlace:['白宫','国会山','林肯纪念堂']
};
var china={
  name:'中国',
  city: '北京市',
  detail: {
    total: {
      population: "2151.6万人",
       area: {
        number: "1.641万平方千米"
      }
    }
  },
  goodPlace:['天安门','故宫','颐和园']
};
var japan={
  name:'日本',
  city: '东京',
  detail: {
    total: {
      population: "1333万",
       area: {
        number: "2188平方公里"
      }
    }
  },
  goodPlace:['东京塔','银座','东京迪斯尼']
};
//要操作的数组
var arr = [america,china,japan]; 

//我想写一个函数,这个函数的功能是:删除数组中指定数值的元素,返回剩下的数组

//函数定义如下
    Array.prototype.del=function(value){ 
      //函数内容
    }; 

举例说明:比如我想删除第二个元素china,我就调用arr.del(china),调用后arr的内容就变成[america,japan]

请高手指教,如何写这个函数,多谢了,分不够还可以加分哦


------解决思路----------------------

Array.prototype.del=function(value){ 
      var index=this.indexOf(value); 
      this.splice(index,1); 
      return this;
 }

------解决思路----------------------
var america={
      name:'美国',
      city: '华盛顿市',
      detail: {
        total: {
          population: "65万",
           area: {
            number: "177平方公里"
          }
        }
      },
      goodPlace:['白宫','国会山','林肯纪念堂']
    };
    var china={
      name:'中国',
      city: '北京市',
      detail: {
        total: {
          population: "2151.6万人",
           area: {
            number: "1.641万平方千米"
          }
        }
      },
      goodPlace:['天安门','故宫','颐和园']
    };
    var japan={
      name:'日本',
      city: '东京',
      detail: {
        total: {
          population: "1333万",
           area: {
            number: "2188平方公里"
          }
        }
      },
      goodPlace:['东京塔','银座','东京迪斯尼']
    };
     
    var arr = [america,china,japan];
     
    Array.prototype.del=function(value){
        var index = this.length;
        var deleindex = 0;
        for(var i=0; i<index; i++){
            if(this[i]['name'] === value['name']){
                deleindex = i;
            }
        }
        
        this.splice(deleindex,1); 
        return this;
    };
     
    arr.del(china);
------解决思路----------------------
楼上说的很好,我想有另外一个数组做变量,来存放操作过程,也是可以的