0

我很困惑我试图删除对象数组中的对象,jquery这是我的代码,jsFiddle

var x = new Array() ; 
var y = {} ; 
y.name = 'myName' ; 
y.age = 28 ; 
y.phone = 27895556 ; 
y.info = [{name:'x' ,age:58} ,{name:'y' , age:15}]
x.push(y) ;

 $.each(x , function(index,value) {
        $.each(value.info , function(i,v){
            if(v.name == 'x'){
            this.splice(i,1) ; 
         }

      });
  }); 

我试图用= 'x'告诉if条件删除对象但我得到这个Uncaught TypeError: Object # has no method 'splice'v.nameerror

更新我需要有类似的东西: y.info = [{name:'x' ,age:58} ,{name:'y' , age:15}]之后splice()

知道我做错了什么谢谢

4

1 回答 1

5

如果您只是想删除包含该值的内部数组元素,{name: 'x'}那么您想要的数组splice就是value.info外部循环的数组:

$.each(x, function(index, value) {
    $.each(value.info, function(i, v) {
        if (v.name === 'x') {
            value.info.splice(i, 1) ; 
        }
    });
});

但是,此代码存在一个问题,即在使用$.each. 此替代代码解决了该问题:

$.each(x, function(index, value) {
    var info = value.info;
    for (var i = 0; i < info.length; ) {
        if (info[i].name === 'x') {
            info.splice(i, 1);
        } else {
            ++i;
        }
    }
});
于 2012-08-15T12:50:08.260 回答